太水的線段樹了,敲了10分鐘就敲完了,但是聽說還有一種並查集的做法?不明覺厲。
#include #include #include #include #include #include using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define cc(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << #x << " = " << x << endl
#define printarr(a, n, m) rep(aaa, n)
inline const int getint()
inline const int max(const int &a, const int &b)
inline const int min(const int &a, const int &b)
inline void pushdown(const int &x)
}void build(const int &l, const int &r, const int &x)
int m=mid;
build(lson); build(rson);
pushup(x);
}void update(const int &l, const int &r, const int &x)
pushdown(x);
int m=mid;
if(l<=m) update(lson); if(m
在一條數軸上有n個點,分別是1~n。一開始所有的點都被染成黑色。接著我們進行m次操作,第i次操作將[li,ri]這些點染成白色。請輸出每個操作執行後
剩餘黑色點的個數。
輸入一行為n和m。下面m行每行兩個數li、ri
輸出m行,為每次操作後剩餘黑色點的個數。
10 33 35 7
2 8
963
資料限制對30%的資料有1<=n<=2000,1<=m<=2000
對100%資料有1<=li<=ri<=n<=200000,1<=m<=200000
1191 數軸染色
時間限制 1 s 空間限制 128000 kb 題目等級 gold 在一條數軸上有n個點,分別是1 n。一開始所有的點都被染成黑色。接著 我們進行m次操作,第i次操作將 li,ri 這些點染成白色。請輸出每個操作執行後 剩餘黑色點的個數。輸入描述 input description 輸入一行為n和m...
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 這些點染成白色。請輸出每個操作執行後 剩餘黑色...