有一篇超級棒的線段樹+大力分類討論的題解!戳我
可是我還是不會寫這個做法qwqwqwq
這裡提供線段樹分治的寫法。感覺比較不需要智商,就是跑的有點慢了。。。
#include#include#include#include#include#include#include#include#define maxn 200010
using namespace std;
int n,m,cnt;
int fa[maxn],siz[maxn];
char kkk[10];
struct node;
struct queq[maxn];
struct seg
t[maxn<<2];
stacks;
map,int>tim;
inline int ls(int x)
inline int rs(int x)
inline int id(int x,int y)
inline int find(int x)
inline void build(int x,int l,int r)
inline void merge(int x,int y)
); siz[y]+=siz[x];
}inline void del(int x)
}inline void insert(int x,int ll,int rr,int k)
int mid=(l+r)>>1;
if(ll<=mid) insert(ls(x),ll,rr,k);
if(midy2) swap(y1,y2),swap(x1,y2);
int u=id(x1,y1),v=id(x2,y2);
if(u>v) swap(u,v);
if(kkk[0]=='o')
else if(kkk[0]=='c')
else op=2;
q[cnt]=(que);
scanf("%s",kkk);
}for(map,int>::iterator it=tim.begin();it!=tim.end();it++)
solve(1);
return 0;
}
SHOI2008 堵塞的交通
這裡提供幾種不用腦子的演算法 當然是離線的 text 記下每條邊的刪除時間,用 text 維護最大生成樹,每次加進一條邊時,跟原來那條鏈上的做比較,刪除那條刪除時間最短的邊即可。線段樹分治 這個演算法將每條邊的加入和刪除時間加入到線段樹中,所以在遍歷到葉子節點時,那個時刻存在的邊都已經在並查集上了,...
SHOI2008 堵塞的交通
有一天,由於某種穿越現象作用,你來到了傳說中的小人國。小人國的布局非常奇特,整個國家的交通系統可 以被看成是乙個2行c列的矩形網格,網格上的每個點代表乙個城市,相鄰的城市之間有一條道路,所以總共有2c個 城市和3c 2條道路。小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道路會變得不...
SHOI2008 堵塞的交通
題目描述 有一天,由於某種穿越現象作用,你來到了傳說中的小人國。小人國的布局非常奇特,整個國家的交通系統可 以被看成是乙個2行c列的矩形網格,網格上的每個點代表乙個城市,相鄰的城市之間有一條道路,所以總共有2c個 城市和3c 2條道路。小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道...