日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ3924 : [Zjoi2015]幻想乡战略游戏

發布時間:2023/12/9 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ3924 : [Zjoi2015]幻想乡战略游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于一個點,要求出它到所有點的帶權距離和,只需記錄下樹分治的結構然后查詢即可。

修改$O(\log n)$,查詢$O(\log n)$。

?

到所有點帶權距離和最小的點顯然是這棵樹的帶權重心。

以1號點為根,考慮一條從父親x到孩子y的邊:

若y子樹內權值和>=總權值和-y子樹內權值和,即2*y子樹內權值和>=總權值和,則重心在y的子樹里,否則不在。

所以重心一定是深度最大的滿足2*子樹內權值和>=總權值和的點。

可以發現重心及其祖先都滿足2*子樹內權值和>=總權值和,而這些點在DFS序上從左往右深度遞增。

所以樹鏈剖分后用線段樹維護DFS序,修改單點點權相當于一條樹鏈整體加上一個數。

查詢重心時直接在線段樹上二分即可。

修改$O(\log^2n)$,查詢$O(\log n)$。

?

#include<cstdio> typedef long long ll; const int N=100010,M=2000000,T=262145; int n,m,i,x,y,z; int g[N],nxt[N<<1],v[N<<1],w[N<<1],ok[N<<1],ed=1,son[N],f[N],all,now,cnt,value[N]; int size[N],heavy[N],top[N],loc[N],seq[N],dfn; int G[N],NXT[M],V[2][M],W[M],ED,tag[T]; ll val[T],sw[N],sdw[N],sew[N],sedw[N]; inline void read(int&a){char c;bool f=0;a=0;while(!((((c=getchar())>='0')&&(c<='9'))||(c=='-')));if(c!='-')a=c-'0';else f=1;while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';if(f)a=-a; } inline void add(int x,int y,int z){v[++ed]=y,w[ed]=z,nxt[ed]=g[x],ok[ed]=1,g[x]=ed;} inline void ADD(int x,int y,int z,int w){V[0][++ED]=y;V[1][ED]=z;W[ED]=w;NXT[ED]=G[x];G[x]=ED;} void findroot(int x,int pre){son[x]=1;f[x]=0;for(int i=g[x];i;i=nxt[i])if(ok[i]&&v[i]!=pre){findroot(v[i],x);son[x]+=son[v[i]];if(son[v[i]]>f[x])f[x]=son[v[i]];}if(all-son[x]>f[x])f[x]=all-son[x];if(f[x]<f[now])now=x; } void dfs(int x,int pre,int dis){ADD(x,now,cnt,dis);for(int i=g[x];i;i=nxt[i])if(ok[i]&&v[i]!=pre)dfs(v[i],x,dis+w[i]); } void solve(int x){int i;for(i=g[x];i;i=nxt[i])if(ok[i])++cnt,dfs(v[i],x,w[i]);for(i=g[x];i;i=nxt[i])if(ok[i])ok[i^1]=0,f[0]=all=son[v[i]],findroot(v[i],now=0),solve(now); } void dfs1(int x,int y){size[x]=1;f[x]=y;for(int i=g[x];i;i=nxt[i])if(v[i]!=y){dfs1(v[i],x);size[x]+=size[v[i]];if(size[v[i]]>size[heavy[x]])heavy[x]=v[i];} } void dfs2(int x,int y){top[x]=y;seq[loc[x]=++dfn]=x;if(heavy[x])dfs2(heavy[x],y);for(int i=g[x];i;i=nxt[i])if(v[i]!=heavy[x]&&v[i]!=f[x])dfs2(v[i],v[i]); } inline void add1(int x,int p){val[x]+=p,tag[x]+=p;} inline void pb(int x){if(tag[x])add1(x<<1,tag[x]),add1(x<<1|1,tag[x]),tag[x]=0;} void change(int x,int a,int b,int c,int d,int p){if(c<=a&&b<=d){add1(x,p);return;}pb(x);int mid=(a+b)>>1;if(c<=mid)change(x<<1,a,mid,c,d,p);if(d>mid)change(x<<1|1,mid+1,b,c,d,p);val[x]=val[x<<1]>val[x<<1|1]?val[x<<1]:val[x<<1|1]; } inline int getroot(){int x=1,a=1,b=n,mid;while(a<b){pb(x),mid=(a+b)>>1;if(val[x<<1|1]*2>=val[1])a=mid+1,x=x<<1|1;else b=mid,x<<=1;}return seq[a]; } inline void modify(int x,int y){value[x]+=y;for(int i=G[x];i;i=NXT[i]){sw[V[0][i]]+=y,sdw[V[0][i]]+=(ll)W[i]*y;sew[V[1][i]]+=y,sedw[V[1][i]]+=(ll)W[i]*y;}while(top[x]!=1)change(1,1,n,loc[top[x]],loc[x],y),x=f[top[x]];change(1,1,n,1,loc[x],y); } inline ll query(int x){ll t=sdw[x];for(int i=G[x];i;i=NXT[i])t+=(sw[V[0][i]]-sew[V[1][i]]+value[V[0][i]])*W[i]+sdw[V[0][i]]-sedw[V[1][i]];return t; } int main(){read(n),read(m);for(i=1;i<n;i++)read(x),read(y),read(z),add(x,y,z),add(y,x,z);f[0]=all=n;findroot(1,now=0);solve(now);dfs1(1,0),dfs2(1,1);while(m--)read(x),read(y),modify(x,y),printf("%lld\n",query(getroot()));return 0; }

  

轉載于:https://www.cnblogs.com/clrs97/p/4779754.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的BZOJ3924 : [Zjoi2015]幻想乡战略游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区四区在线免费观看 | 中国 免费 av| 欧美大片免费观看网址 | 国产精品变态另类虐交 | 成人精品一区二区三区在线 | 欧美日韩在线播放 | 国av在线| 午夜剧场成人 | 久久久久夜夜夜精品国产 | 伊人毛片 | 国产美女91呻吟求 | 囯产精品一品二区三区 | 1级性生活片 | 一级黄色a | 色94色欧美sute亚洲线路二 | 天天干天天插天天射 | 麻豆av一区二区三区在线观看 | 99毛片| 欧美日韩亚洲另类 | 亚洲涩涩视频 | 午夜国产在线观看 | 中文人妻熟女乱又乱精品 | 三级视频网站在线观看 | 国产亚洲精品久久久久四川人 | 成人网在线视频 | 免费无码国产精品 | 精品免费在线观看 | 古代玷污糟蹋np高辣h文 | 久久久一二三四 | 四虎影视免费在线观看 | 国产夫妻精品 | 亚洲免费高清视频 | av网站在线观看不卡 | 毛片一级在线观看 | 国产欧美日韩三级 | 最全aⅴ番号库网 | 欧美国产另类 | 欧亚av| www亚洲国产 | 欧美亚洲大片 | 合欢视频在线观看 | 欧美色图亚洲激情 | 91水蜜桃 | 欧美日韩中文视频 | 久久aⅴ国产欧美74aaa | 日本公与丰满熄 | 国产成人啪一区二区 | 美女扒开尿口让男人桶 | 超碰一区二区三区 | 伊人久艹 | 久久精品1 | 国产在线第二页 | 日韩一卡二卡 | 麻豆综合网 | 久久这里有精品视频 | 国产精品二区三区 | 国产观看 | 五月婷婷在线观看视频 | 激情久久网站 | 黄色91免费版 | 中文字幕一区二区人妻视频 | 亲子乱对白乱都乱了 | 成年人免费小视频 | 婷婷麻豆 | 欧美淫视频 | 欧美熟妇一区二区 | 香蕉视频黄色在线观看 | 猛1被调教成公厕尿便失禁网站 | 亚洲天堂男人网 | 日韩精品中文字幕在线观看 | 亚洲一区二区三区四 | 婷婷丁香激情五月 | 国语对白对话在线观看 | 女生下面流水视频 | 国产中文欧美日韩在线 | 欧美乱仑 | 亚洲国产剧情 | 亚洲第一综合网 | 欧美专区视频 | 日本一区不卡视频 | 天堂在线v | 草在线| 春色伊人 | 最近的中文字幕在线看视频 | 一本色道久久综合狠狠躁的推荐 | 亚洲国产一区二区在线 | 欧美一级高潮片 | 97国产精品视频 | 久久国产精品-国产精品 | 在线免费观看不卡av | 亚洲精品鲁一鲁一区二区三区 | 在线观看中文字幕一区二区 | 性欧美free| 色吧在线视频 | 国产夫妻自拍小视频 | 热玖玖| 三上悠亚影音先锋 | 日本色网址 | 男女黄床上色视频 |