在一條數軸上有n個點,分別是1~n。一開始所有的點都被染成黑色。接著
我們進行m次操作,第i次操作將[li,ri]這些點染成白色。請輸出每個操作執行後
剩餘黑色點的個數。
輸入一行為n和m。下面m行每行兩個數li、ri
輸出m行,為每次操作後剩餘黑色點的個數。
10 3
3 35 7
2 8
9
63
資料限制
對30%的資料有1<=n<=2000,1<=m<=2000
對100%資料有1<=li<=ri<=n<=200000,1<=m<=200000
一眼線段樹,雖然能過,不過太傻x了233
每次我們摧毀了乙個區間,下一次如果還要摧毀這個區間或者它的子區間的話,我們就不用處理了。這樣我們可以把每乙個區間抽象成乙個點,用並查集來維護。合併時將[l,r]區間全部合併,然後n–。這樣每個點只會被合併一次,複雜度o(
nα(n
)),跑得很快。
**:
#include
#include
#include
#include
using
namespace
std;
int fa[200010];
int find(int x)
int main()
return0;}
/*g++ codevs1191.cpp -o codevs1191.exe -wall
*/
codevs1191 數軸染色
題目描述 description 在一條數軸上有n個點,分別是1 n。一開始所有的點都被染成黑色。接著 我們進行m次操作,第i次操作將 li,ri 這些點染成白色。請輸出每個操作執行後 剩餘黑色點的個數。輸入描述 input description 輸入一行為n和m。下面m行每行兩個數li ri 輸...
codevs 1191 數軸染色
1191 數軸染色 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 題目描述 description 在一條數軸上有n個點,分別是1 n。一開始所有的點都被染成黑色。接著 我們進行m次操作,第i次操作將 li,ri 這些點染成白色。請輸出每個操作執行後 剩餘黑色...
CODE VS 1191 數軸染色
題目描述 description 在一條數軸上有 n個點,分別是1 n。一開始所有的點都被染成黑色。接著 我們進行 m次操作,第 i次操作將 li,ri 這些點染成白色。請輸出每個操作執行後 剩餘黑色點的個數。輸入描述 input description 輸入一行為n和 m。下面 m行每行兩個數li...