妖夢斬木棒

2021-10-06 06:29:31 字數 949 閱讀 8924

顯然,大概率是用線段樹維護區間資訊。

考慮區間合併:每次合併的時候我們只關注左區間靠右的第乙個非x符號和右區間的靠左第乙個非x符號。

然後我們維護一下即可,不過我們要注意如果當前區間只有乙個非x字元,那麼合併之後就沒了。

ac**:

#pragma gcc optimize("-ofast","-funroll-all-loops")

#include

//#define int long long

using namespace std;

const

int n=

2e5+10;

int n,m;

char ch[3]

;struct nodet[n<<2]

,c;#define mid (l+r>>1)

inline node merge

(node a,node b)

return c;

}void

change

(int p,

int l,

int r,

int x,

int k)

if(x<=mid)

change

(p<<

1,l,mid,x,k)

;else

change

(p<<1|

1,mid+

1,r,x,k)

; t[p]

=merge

(t[p<<1]

,t[p<<1|

1]);

}node ask

(int p,

int l,

int r,

int ql,

int qr)

signed

main()

return0;

}

題解報告 P3797 妖夢斬木棒

本題可以算線段樹的基本操作了,進入正題吧 我們線段樹中儲存三個變數 做題過程分為建樹,單點修改和查詢 很經典了吧 本題在建樹和單點修改時只有一點與其他節點不同,就是合併節點資訊,在這裡略作解釋 首先是最簡單直接賦值 rs x rs ls x ls sum x sum sum ls 1 rs 1 另外...

妖夢拼木棒

上道題中,妖夢斬了一地的木棒,現在她想要將木棒拼起來。有n根木棒,現在從中選4根,想要組成乙個正三角形,問有幾種選法?第一行乙個整數n 第二行n個整數,a1,a2,an 0 一行乙個整數,對1e9 7取模 輸入 1 4 1 1 2 2 輸出 1 1 對於30 的資料 n 5000 對於100 的資料...

暴力列舉 妖夢拼木棒

上道題中,妖夢斬了一地的木棒,現在她想要將木棒拼起來。有 n 根木棒,現在從中選 4 根,想要組成乙個正三角形,問有幾種選法?答案對 109 7 取模 第一行乙個整數 n。第二行 n 個整數,第 i 個整數 ai 代表第 i 根木棒的長度。一行乙個整數代表答案 輸入樣例 41 1 2 2 輸出樣例資...