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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[HAOI2015]T2

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [HAOI2015]T2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

有一棵點數為N的樹,以點1為根,且樹點有邊權。然后有M個操作,分為三種:

操作1:把某個節點x的點權增加a。

操作2:把某個節點x為根的子樹中所有點的點權都增加a。

操作3:詢問某個節點x到根的路徑中所有點的點權和。

【輸入格式】

第一行兩個整數N,M,表示點數和操作數。

接下來一行N個整數,表示樹中節點的初始權值。

接下來N-1行每行兩個正整數fr,to,表示該樹中存在一條邊(fr,to)。

再接下來M行,每行分別表示一次操作。其中第一個數表示該操作的種類(1~3),之后接這個操作的參數(x或者x a)。

【輸出格式】

對于每個詢問操作,輸出該詢問的答案。答案之間用換行隔開。

【樣例輸入】

5 5

1 2 3 4 5

1 2

1 4

2 3

2 5

3 3

1 2 1

3 5

2 1 2

3 3

【樣例輸出】

6

9

13

【提示】

對于30%的數據,N,M<=1000

對于50%的數據,N,M<=100000且數據隨機。

對于100%的數據,N,M<=100000,且所有輸入數據的絕對值都不會超過10^6。

1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cmath> 6 #include<algorithm> 7 #include<vector> 8 #include<queue> 9 using namespace std; 10 typedef long long LL; 11 const LL maxn=100010; 12 inline LL read(){ 13 LL x=0,f=1;char ch=getchar(); 14 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 15 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 16 return x*f; 17 } 18 vector<LL> to[maxn]; 19 LL N,M; 20 LL a[maxn]; 21 LL dep[maxn],fa[maxn],son[maxn],top[maxn],siz[maxn],id[maxn]; 22 LL val[maxn]; 23 LL num; 24 inline void dfs1(LL rt,LL fath,LL deep){ 25 dep[rt]=deep; siz[rt]=1; fa[rt]=fath; 26 for(LL i=0;i<to[rt].size();i++){ 27 LL y=to[rt][i]; 28 if(y!=fa[rt]){ 29 dfs1(y,rt,deep+1); 30 siz[rt]+=siz[y]; 31 if(siz[son[rt]]<siz[y]) son[rt]=y; 32 } 33 } 34 } 35 inline void dfs2(LL rt,LL tp){ 36 top[rt]=tp; id[rt]=++num; 37 if(son[rt]!=0) dfs2(son[rt],tp); 38 for(LL i=0;i<to[rt].size();i++){ 39 LL y=to[rt][i]; 40 if(y!=fa[rt]&&y!=son[rt]){ 41 dfs2(y,y); 42 } 43 } 44 } 45 struct node{ 46 LL l,r; 47 LL sum,lazy; 48 }tree[maxn*8]; 49 inline void build(LL rt,LL l,LL r){ 50 tree[rt].l=l; tree[rt].r=r; 51 if(l==r){ 52 tree[rt].sum=val[l]; 53 tree[rt].lazy=0; 54 return ; 55 } 56 LL mid=(l+r)>>1; 57 build(rt<<1,l,mid); build(rt<<1|1,mid+1,r); 58 tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum; 59 } 60 inline void update_son(LL rt){ 61 LL d=tree[rt].lazy; 62 if(d!=0){ 63 tree[rt<<1].sum+=(tree[rt<<1].r-tree[rt<<1].l+1)*d; 64 tree[rt<<1|1].sum+=(tree[rt<<1|1].r-tree[rt<<1|1].l+1)*d; 65 tree[rt<<1].lazy+=d; tree[rt<<1|1].lazy+=d; 66 tree[rt].lazy=0; 67 } 68 } 69 inline void change(LL rt,LL l,LL r,LL delta){ 70 if(l<=tree[rt].l&&tree[rt].r<=r){ 71 tree[rt].sum+=(tree[rt].r-tree[rt].l+1)*delta; 72 tree[rt].lazy+=delta; 73 return ; 74 } 75 update_son(rt); 76 LL mid=(tree[rt].l+tree[rt].r)>>1; 77 if(l<=mid) change(rt<<1,l,r,delta); 78 if(mid+1<=r) change(rt<<1|1,l,r,delta); 79 tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum; 80 } 81 inline LL query(LL rt,LL l,LL r){ 82 if(l<=tree[rt].l&&tree[rt].r<=r){ 83 return tree[rt].sum; 84 } 85 update_son(rt); 86 LL ans=0; 87 LL mid=(tree[rt].l+tree[rt].r)>>1; 88 if(l<=mid) ans+=query(rt<<1,l,r); 89 if(mid+1<=r) ans+=query(rt<<1|1,l,r); 90 return ans; 91 } 92 inline void ASK(LL x){ 93 LL tp=top[x],ans=0; 94 while(x!=0&&tp!=0){ 95 ans+=query(1,id[tp],id[x]); 96 x=fa[tp]; tp=top[x]; 97 } 98 printf("%lld\n",ans); 99 } 100 int main(){ 101 N=read(); M=read(); 102 for(LL i=1;i<=N;i++) a[i]=read(); 103 for(LL i=1,u,v;i<=N-1;i++){ 104 u=read(); v=read(); 105 to[u].push_back(v); to[v].push_back(u); 106 } 107 dis[1]=a[1]; 108 dfs1(1,0,1); dfs2(1,1); 109 for(LL i=1;i<=N;i++) val[id[i]]=a[i]; 110 build(1,1,num); 111 for(LL i=1,kin;i<=M;i++){ 112 kin=read(); 113 if(kin==1){ 114 LL x=read(),d=read(); 115 change(1,id[x],id[x],d); 116 } 117 else if(kin==2){ 118 LL x=read(),d=read(); 119 change(1,id[x],id[x]+siz[x]-1,d); 120 } 121 else if(kin==3){ 122 LL x=read(); 123 ASK(x); 124 } 125 } 126 return 0; 127 }

?

轉載于:https://www.cnblogs.com/CXCXCXC/p/5022114.html

總結

以上是生活随笔為你收集整理的[HAOI2015]T2的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产成年无码久久久久毛片 | 欧美 日本 国产 | 久久天天躁狠狠躁夜夜躁2014 | 成人在线免费网址 | 舐丝袜脚视频丨vk | a激情 | 奶水旺盛的少妇在线播放 | 精品一区二区三区无码视频 | 亚洲国产精品99 | 久久综合88| 国产成人精品亚洲男人的天堂 | 国产精品麻豆视频 | 五月婷婷综合在线观看 | 欧美.www | 喷潮在线| 久久dvd | 色汉综合 | 久久成人av | 男女激情免费网站 | 中文字幕五区 | 狠狠干2020 | 日韩啪 | 久久精品国产亚洲av嫖农村妇女 | 久久二区三区 | 国v精品久久久网 | 精品国产18久久久久久二百 | 污视频91 | 初尝黑人巨炮波多野结衣 | 欧美日韩一区二区在线播放 | 久久合合| 亚洲一区 在线播放 | 伊人激情综合 | 天天透天天操 | 久久久久久9999 | 国产农村妇女精品一区二区 | 亚洲日本成人 | 精人妻无码一区二区三区 | a网站在线观看 | 麻豆 美女 丝袜 人妻 中文 | 日韩a级一片| 久久久久午夜 | av超碰| 日日爽夜夜 | 成人av在线播放网站 | 波多野结衣一本一道 | 色久在线| 少妇被又大又粗又爽毛片久久黑人 | 免费在线黄网站 | www.狠狠干| 最新中文字幕 | 天天操天天摸天天干 | 女同性αv亚洲女同志 | 国产日韩一区二区三免费高清 | 九七影院在线观看免费观看电视 | 黄色片免费的 | 亚洲色吧| 涩涩久久 | 欧美精品久 | 国产乱论视频 | 99久久精品免费看国产免费软件 | 美女扒开尿口让男人爽 | 播放男人添女人下边视频 | 欧美丰满少妇人妻精品 | 欧美做爰全过程免费观看 | 两性视频久久 | 天天摸天天舔 | 亚洲熟妇无码另类久久久 | 精品国产一区二区三区久久久蜜臀 | 九色.com| 尤物国产视频 | 禁果av一区二区三区 | 国产乱大交 | 久久久久美女 | 极品销魂美女少妇尤物 | 伊人久久中文字幕 | 成人福利影院 | 色射视频| 91人人澡人人爽人人精品 | 911av| 日本一区二区不卡在线观看 | 西比尔在线观看完整视频高清 | 91新网站| 国产片自拍| 欧美久久久久久久久久 | 草逼视频免费看 | www夜片内射视频日韩精品成人 | 亚洲欧美在线播放 | 岳狂躁岳丰满少妇大叫 | 五月激情六月丁香 | 69精品| 精品综合在线 | 婷婷午夜天 | 免费在线观看高清影视网站 | 欧美巨乳美女 | 精品国产免费av | 色一情一乱一伦一区二区三区 | 久久亚洲无码视频 | 久久国产柳州莫菁门 | 黄视频在线观看免费 |