對於每個i用單調棧求出小於i的第乙個比他大的數l[i],以及大於i的第乙個比他大的數r[i]。
i一定是l[i]-r[i]中最大的數,1-a+1分別加(1-a+1)*a[i],a+2 - b+1加 a+1 a[i] a+2-a+b+1 遞減加
用二階差分o(1)完成修改
用兩遍字首和求出答案
#include#include#include#includeusing namespace std;
typedef long long ll;
const int n=1e7+100;
const int inf=0x3f3f3f3f;
int a[n];
int n,p;
void gen()
}int s[n],top;
int c[n];
int l[n],r[n];
int main()
s[++top]=i;
} top=1;
for(i=n;i>=0;i--)
s[++top]=i;
} int x,y;
for(i=1;i<=n;i++)
for(int i=1;i<=n;++i)c[i]=(c[i]+p)%p;
for(i=1;i<=n;i++) c[i]=(c[i-1]+c[i])%p;
for(i=1;i<=n;i++) c[i]=(c[i-1]+c[i])%p;
int ans=0;
for(i=1;i<=n;i++) ans=ans^c[i];
cout<
return 0;
}
演算法筆記(二)單調棧(1)最大矩形
單調棧也是演算法題中常用的一種方法,這裡總結一下思路 雖然題目的難度為hard,但是思路還是很好想到的,難點在於優化的部分。我們可以遍歷每根柱子 i 並且以當前柱子的高度 height i 作為此矩形 rectangle i 的高 假設矩形的高為豎直方向的,寬為水平方向 對於此矩形的寬 width ...
11 3清北集訓T1work dp 單調佇列優化
subtask1 暴力dp o nk include include include include include include include includeusing namespace std typedef long long ll const ll inf 0x3f3f3f3f inl...
線段樹 單調棧 UNR 1 爭奪聖杯
用單調棧求出left right 可以發現每個點的貢獻是關於left right的分段函式 然後就是分段函式累加求和 當時打的線段樹 看了題解漲姿勢了 可以差分 做到o n include include includeusing namespace std typedef pairabcd typ...