NOIP模擬 字胡串(單調棧)

2022-08-21 02:21:12 字數 614 閱讀 9131

只剩5分鐘的時候打了乙個三重迴圈。。。。完全沒想到固定左端點減少1個n。。。。被diss了一波。。。。

對於乙個區間,如果他合法,那麼一定是有乙個非最大數在二進位制下與最大數有不同的地方,所以對於乙個數,利用單調棧記錄他作為最大數的區間、左右第乙個至少有一位與他不同的地方,利用容斥原理計算一下統計答案即可,複雜度

。然後出現了吊打標程的dalao,利用雙指標+分治做到

,傳送門

#includeusing namespace std;

typedef long long ll;

const int maxn=1e6+10;

int n;

int a[maxn],l[maxn],r[maxn];

int sta[maxn],pos[maxn],top;

int ll[maxn],rr[maxn];

int mxpos[35],maxx[35];

int read()

int main()

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

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

cout<

return 0;

}

NOIP校內模擬 T2 字胡串(分治)

lst神仙 這是他的做法 吊了標算 對於這種有多少區間滿足要求的 我們套路的用分治做 每次都統計左端點在左半邊 右端點在右半邊的個數 設f i 表示當前點到中間分割點的最大值,g i 表示當前點到中間分割點的或和 我們發現 g i f i 所以只需找到g i f i 的區間就好 然後f肯定是單調遞增...

NOIP校內模擬 T2 字胡串(分治)

lst神仙 這是他的做法 吊了標算 對於這種有多少區間滿足要求的 我們套路的用分治做 每次都統計左端點在左半邊 右端點在右半邊的個數 設f i 表示當前點到中間分割點的最大值,g i 表示當前點到中間分割點的或和 我們發現 g i f i 所以只需找到g i f i 的區間就好 然後f肯定是單調遞增...

NOIP模擬 奇襲 線段樹 單調棧

題意 給定數列,求有多少個區間滿足區間最大 1 區間最小 區間長度 滿足條件為 m ax 1 m in r 1 l ma x mi n r lmax 1 min r 1 l max min r l max 1 min r 1 l ma x mi n r lma x mi n l rmax min l...