寒假裡lbn大爺講離線演算法時就講過了。。。然而現在才明白該怎麼做。
這題就是樹上帶修莫隊,帶修莫隊就是再加一維時間,然後分塊size=n^(2/3),時間複雜度o(n^1.67)。樹上莫隊可以先求出括號序列,若x為y祖先,則兩點間的路徑為l[x]~l[y],否則就是r[x]~l[y]+lca。沒了。。
#include#include#include#include#include#define ll long long
#define n 100005
using namespace std;
int n,m,q,p,x,y,sz,v[n],w[n],first[n],c[n],len;
int dep[n],size[n],fa[n],bson[n],top[n];
int ord[n*2],l[n],r[n],s,vis[n];
int cnt,ti,la[n],hz[n],pos[n*2];
ll now,ans[n];
struct edgee[n*2];
struct qqry[n];
struct ***y[n];
bool cmp(const q &a,const q &b)
r[x]=++s;ord[s]=x;
}void dfs(int x,int y)
int lca(int x,int y)
; else qry[++cnt]=(q);
} else mdy[++ti]=(t),la[x]=y;
} sort(qry+1,qry+cnt+1,cmp);
for (int x=1,y=0,z=0,i=1;i<=cnt;i++)
for (int i=1;i<=cnt;i++)
printf("%lld\n",ans[i]);
return 0;
}
WC2013 糖果公園
candyland 有一座糖果公園,公園裡不僅有美麗的風景 好玩的遊樂專案,還有許多免費糖果的發放點,這引來了許多貪吃的小朋友來糖果公園玩。糖果公園的結構十分奇特,它由 n n n 個遊覽點構成,每個遊覽點都有乙個糖果發放處,我們可以依次將遊覽點編號為 1 1 1 至 n n n。有 n 1 n 1...
BZOJ 3052 wc2013 糖果公園
蒟蒻去做糖果公園了qaq 講道理速度能排rk11很開心啊 其實前人之述備矣 複雜度分析 推薦一波棟爺爺的題解 帶修改莫隊其實就是多一維時間 所以你需要資瓷修改和撤銷修改 然後就跟沒修改的莫隊其實差不多了 關於樹上莫隊 很明顯就是用dfs序這個套路 發現出現次數為奇數次的才會算到 棟老師題解那裡也有說...
BZOJ 3052 wc2013 糖果公園
讀題很容易知道這就是一道簡單的樹上帶修改莫隊,樹上待修改莫隊只要將待修改莫隊和樹上莫隊結合起來使用就可以了。感謝darkbzoj include include include include include include include include set include include i...