wikioi 1191 數軸染色(線段樹 水題)

2021-09-06 17:45:23 字數 1568 閱讀 2830

太水的線段樹了,敲了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 3

3 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 這些點染成白色。請輸出每個操作執行後 剩餘黑色...