uoj 58
把樹轉化為尤拉序,把詢問對映到尤拉序上,在尤拉序上跑帶修改莫隊。
具體的做法可以參考《國家集訓隊2014**集.pdf>的第82頁描述的性質。
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 200010;
int n, m, qq, uu, vv, qcnt, tmp, ccnt, dcnt, blsz, l, r, tm;
int c[maxn], bl[maxn];
int ne[maxn], po[maxn], fa[maxn], dep[maxn], sz[maxn], dfn[maxn*2];
int son[maxn], top[maxn], in[maxn], out[maxn], vnum[maxn];
long
long ans[maxn], res, v[maxn], w[maxn];
vector
head[maxn];
bool is[maxn];
struct nodeq[maxn];
inline
bool cmp(const node a, const node b)else
return bl[a.l] < bl[b.l];
}inline
int gt()
}void dfs1(int x) son[x] = sznum;
dfn[out[x] = ++dcnt] = x;
}void dfs2(int x, int tp)
}int lca(int u, int v)
void add(int x)
void del(int x)
void xor(int x)
int main() dfs1(1), dfs2(1, 1);
blsz = max(1.0, pow(dcnt, 2.0/3));
for(int i = 1; i <= dcnt; i ++) bl[i] = (i-1)/blsz + 1;
for(int i = 1; i <= n; i ++) c[i] = gt();
for(int i = 1; i <= qq; i ++)else
q[qcnt].id = qcnt, q[qcnt].time = ccnt;
}else po[++ccnt] = gt(), ne[ccnt] = gt();
}sort(q+1, q+1+qcnt, cmp);
l = 1, r = 0, tm = 0;
for(int i = 1; i <= qcnt; i ++)
swap(c[po[tm+1]], ne[tm+1]);
if((in[po[tm+1]] <= r && in[po[tm+1]] >= l)^
(out[po[tm+1]] <= r && out[po[tm+1]] >= l))
} for( ; tm > q[i].time; tm --)
swap(c[po[tm]], ne[tm]);
if((in[po[tm]] <= r && in[po[tm]] >= l)^
(out[po[tm]] <= r && out[po[tm]] >= l))
}for( ; l > q[i].l; l --) xor(dfn[l-1]);
for( ; r < q[i].r; r ++) xor(dfn[r+1]);
for( ; l < q[i].l; l ++) xor(dfn[l]);
for( ; r > q[i].r; r --) xor(dfn[r]);
if(q[i].lca != 0)else ans[q[i].id] = res;
}for(int i = 1; i <= qcnt; i ++) printf("%lld\n", ans[i]);
return
0;}
bzoj 3052 糖果公園
題意 給出一顆n個結點的樹,每個結點上有一種糖果 1,m 乙個人經過這個結點品嚐糖果j獲得的愉悅度為w time j val j 其中time j 指j的品嚐次數 給出q次操作,操作有兩種 1 更改某結點的糖果種類 2 查詢某兩個結點路徑上的愉悅度總和 題解 250s的神題,orz各位神犇 將樹分塊...
BZOJ3052 糖果公園
0 題目鏈結 1 題目大意 給定一顆n個點的無根樹,每個點有乙個顏色,要進行q次操作,有兩種操作,顏色總數是m。a query操作,給定起始點和終點,對於這條路徑,從起始點出發,對於沿途的點,如果這個點的顏色j是第i次出現,那麼對於這個詢問的答案的貢獻是vi?wj。b change操作,每次修改乙個...
BZOJ 3052 糖果公園 樹上帶修改莫隊
time limit 200 sec memory limit 512 mb submit 1264 solved 637 submit status discuss sample input 84131 2784 submit status discuss home back 這道題我很快的寫完了...