**佇列:
題目傳送門:
對於這種環狀的序列問題,我們可以破環成鏈,兩倍延長陣列即可。
所以,以\(k\)開頭的方案就可以對應陣列裡\([k,k+n-1]\)了。
然後,我們求出陣列的字首和,以\(k\)開頭的方案不會惹怒老闆那就相當於\(max(sum_),(pos\in [k,k+n-1])\)不會小於\(sum_k\)。
我們用單調佇列動態維護區間最小值然後與\(sum_k\)比較更新答案即可。
時間複雜度:\(o(n)\)
空間複雜度:\(o(n)\)
**如下:
#include using namespace std;
const int maxn=1e6+5;
int n,head,tail,ans;
int a[maxn<<1],sum[maxn<<1],list[maxn<<1];
int read()
int main()
printf("%d\n",ans);
return 0;
}
好訊息,壞訊息(洛谷 P2629)
題目描述 uim在公司裡面當秘書,現在有n條訊息要告知老闆。每條訊息有乙個好壞度,這會影響老闆的心情。告知完一條訊息後,老闆的心情等於之前老闆的心情加上這條訊息的好壞度。最開始老闆的心情是0,一旦老闆心情到了0以下就會勃然大怒,炒了uim的魷魚。uim為了不被炒,知道了了這些訊息 已經按時間的發生順...
P2629 好訊息,壞訊息
uim在公司裡面當秘書,現在有n條訊息要告知老闆。每條訊息有乙個好壞度,這會影響老闆的心情。告知完一條訊息後,老闆的心情等於之前老闆的心情加上這條訊息的好壞度。最開始老闆的心情是0,一旦老闆心情到了0以下就會勃然大怒,炒了uim的魷魚。uim為了不被炒,知道了了這些訊息 已經按時間的發生順序進行了排...
P2629 好訊息,壞訊息
描述 uim在公司裡面當秘書,現在有n條訊息要告知老闆。每條訊息有乙個好壞度,這會影響老闆的心情。告知完一條訊息後,老闆的心情等於之前老闆的心情加上這條訊息的好壞度。最開始老闆的心情是0,一旦老闆心情到了0以下就會勃然大怒,炒了uim的魷魚。uim為了不被炒,知道了了這些訊息 已經按時間的發生順序進...