顯然,大概率是用線段樹維護區間資訊。
考慮區間合併:每次合併的時候我們只關注左區間靠右的第乙個非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 輸出樣例資...