「SDOI2013」森林
「SDOI2013」森林 传送门 树上主席树 + 启发式合并 锻炼码力,没什么好说的。 细节见代码。 参考代码: #include <algorithm> #include <cstdio> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout) using std ::sort; using std ::swap; using std ::unique; using std ::lower_bound; inline char _getchar() { static char buf[100000], *p1 = buf, *p2 = buf; return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1++; } template < class T > inline void read(T& s) { s = 0; rg int f = 0; rg char c = _getchar(); while ('0' > c || c > '9') f |= c == '-', c = _getchar(); while ('0' <