這道題給你好多的01串,還有好多的區間統一賦值。
沒錯,你想到了什麼?
珂朵莉樹!
所以你就可以用珂朵莉樹很輕鬆地水過這道題了!
唯一要注意的是split的順序。必須先split右邊的,再split左邊的。
原因是先split左邊的時候,可能會因為split右邊而導致原迭代器被刪掉了,所以左邊的迭代器會是乙個非法的,會re。
然後就根本沒有問題了。
**:
#include#include#includeconst int maxn = 100005;
int n, m;
struct nodes
bool operator < (const nodes &rhs) const
};std::setchotholly;
#define it std::set::iterator
it split(int pos)
void assign(int l, int r, int x)
void revers(int l, int r)
int sum(int l, int r)
return ans;
}int coun(int l, int r)
else
}ans = std::max(ans, res);
return ans;
}int main()
n, 0));
while(m--)
return 0;
}
P2572 SCOI2010 序列操作
include include define n 100005 using namespace std int n,m struct seg t n 2 共13個成員 void rev int k 第k個點取反 在外層修改了取反標誌 void color int k,int v 第k個點全改成0 1...
P2572 SCOI2010 序列操作
對自己 rng 驕兵必敗 lpl 加油!題目描述 lxhgww最近收到了乙個01序列,序列裡面包含了n個數,這些數要麼是0,要麼是1,現在對於這個序列有五種變換操作和詢問操作 0 a b 把 a,b 區間內的所有數全變成0 1 a b 把 a,b 區間內的所有數全變成1 2 a b 把 a,b 區間...
P2572 SCOI2010 序列操作
線段樹神仙操作 珂朵莉樹基本操作?珂朵莉樹是不可能的,這輩子只會碼線段樹,只有線段樹神仙操作才刺激,debug之後ac才最快樂 這題我折騰了半個下午加半個晚上。維護的東西太多了。如果沒有區間反轉,這題很簡單,但是有反轉,所以既要維護1,又要維護0。tot記錄區間中1的個數 len記錄區間長度 l記錄...