51Nod1482 部落訊號

2022-08-16 14:36:14 字數 1009 閱讀 8923

題意:有n個部落圍成一圈,每個部落都有乙個高度,如果兩個部落之間的部落高度都低於這兩個部落的高度,那麼這兩個部落則互相可見,乙個部落從順時針或逆時針方向看到另乙個部落都算互相可見

題解:單調棧

乙個部落從順時針方向看到與它互相可見的部落,一定是一段連續遞增的序列,逆時針同理

這就很像單調棧的維護方式

先把最大的點砍掉,斷環為鏈

然後對於每個點順時針和逆時針的貢獻都用單調棧統計一次

最後再把最大點的貢獻算一遍

#include#include#include#include#include#include#define ll long long  

using namespace std;

const int n = 1000010;

int n,mx,top;

int a[n],v[n],stk[n],same[n],bj[n],l[n],r[n];

ll ans;

int gi()

int main()

for(int i=mx; i<=n; i++) v[++top]=a[i];

for(int i=1; i<=mx-1; i++) v[++top]=a[i];

top=0;

for(int i=2; i<=n; i++)

top=0,stk[top]=n+1;

for(int i=n; i>=2; i--)

r[i]=stk[top];

stk[++top]=i;

} for(int i=2; i<=n; i++)

mx=0;

for(int i=2; i<=n; i++)

mx=0;

for(int i=n; i>=2; i--)

for(int i=2; i<=n; i++) ans+=bj[i];

printf("%lld", ans);

return 0;

}

51Nod 1482 部落訊號(單調棧)

乙個長度為 n n 的環 a role presentation style position relative a a,如果環上有一對數 x,y x,y 當連線 x,y x,y 的兩對弧中任意一對上不存在比 mi n min 大的數,則稱 x,y x,y 可以互相看見,問有多少對數可以互相看見。3...

51nod 貪心入門

有若干個活動,第i個開始時間和結束時間是 si,fi 活動之間不能交疊,要把活動都安排完,至少需要幾個教室?分析 能否按照之一問題的解法,每個教室安排盡可能多的活動,即按結束時間排序,再貪心選擇不衝突的活動,安排乙個教室之後,剩餘的活動再分配乙個教室,繼續貪心選擇 反例 a 1,2 b 1,4 c ...

51nod 迷宮問題

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...