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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【树链剖分】洛谷树(P3401)

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【树链剖分】洛谷树(P3401) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

P3401


題目大意

給你一棵樹,讓你進行以下操作

  • 修改一條邊的邊權
  • 查詢一條路徑的所有子路徑異或值的和

  • 解題思路

    記下所有點到根節點的路徑亦或值,那么查詢就是所有點對的異或值之和

    因為邊權<1024,最多只有10位,所以可以樹鏈剖分,然后統計每一位1的數量,最后乘起來


    code

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #define N 30010 using namespace std; ll n,q,x,y,z,w,sum,num,tot,v[N],vv[N],h[N],hs[N],fa[N],sz[N],dep[N],low[N],dfn[N],top[N]; struct rec {ll to,nx,l; }e[N<<1]; struct node {ll a[10];node operator +(const node &b){node c;for(ll i=0;i<10;++i)c.a[i]=a[i]+b.a[i];return c;} }; struct Tree {#define ls x*2#define rs x*2+1node s[N<<2];int lazy[N<<2];void push_up(ll x){s[x]=s[ls]+s[rs];return;}void get(ll x,ll l,ll r,ll y){lazy[x]^=y;for(int i=0;i<10;++i)if(y&(1<<i))s[x].a[i]=r-l+1-s[x].a[i];return;}void push_down(ll x,ll l,ll r){if(lazy[x]){int mid=l+r>>1;get(ls,l,mid,lazy[x]);get(rs,mid+1,r,lazy[x]);lazy[x]=0;}return;}void change(ll x,ll l,ll r,ll y,ll z){if(l==r){for(ll i=0;i<10;++i)s[x].a[i]=z&1,z>>=1;return;}ll mid=l+r>>1;if(y<=mid)change(ls,l,mid,y,z);else change(rs,mid+1,r,y,z);push_up(x);return;}void chg(ll x,ll L,ll R,ll l,ll r,ll z){if(L==l&&R==r){get(x,L,R,z);return;}ll mid=L+R>>1;push_down(x,L,R);if(r<=mid)chg(ls,L,mid,l,r,z);else if(l>mid)chg(rs,mid+1,R,l,r,z);else chg(ls,L,mid,l,mid,z),chg(rs,mid+1,R,mid+1,r,z);push_up(x);return;}node ask(ll x,ll L,ll R,ll l,ll r){if(L==l&&R==r)return s[x];ll mid=L+R>>1;push_down(x,L,R);if(r<=mid)return ask(ls,L,mid,l,r);else if(l>mid)return ask(rs,mid+1,R,l,r);else return ask(ls,L,mid,l,mid)+ask(rs,mid+1,R,mid+1,r);} }T; void add(ll x,ll y,ll z) {e[++tot].to=y;e[tot].l=z;e[tot].nx=h[x];h[x]=tot;return; } void dfs1(ll x) {sz[x]=1;for(ll i=h[x];i;i=e[i].nx){ll y=e[i].to;if(y==fa[x])continue;dep[y]=dep[x]+1;v[y]=v[x]^e[i].l;vv[y]=e[i].l;fa[y]=x;dfs1(y);sz[x]+=sz[y];if(sz[y]>sz[hs[x]])hs[x]=y;}return; } void dfs2(ll x,ll anc) {top[x]=anc;dfn[x]=++w;T.change(1,1,n,dfn[x],v[x]);if(hs[x])dfs2(hs[x],anc);for(ll i=h[x];i;i=e[i].nx){ll y=e[i].to;if(y==fa[x]||y==hs[x])continue;dfs2(y,y);}low[x]=w;return; } node ask(ll x,ll y) {node now;for(ll i=0;i<10;++i)now.a[i]=0;while(top[x]!=top[y]){if(dep[top[x]]<dep[top[y]])swap(x,y);now=now+T.ask(1,1,n,dfn[top[x]],dfn[x]);x=fa[top[x]];}if(dep[x]>dep[y])swap(x,y);now=now+T.ask(1,1,n,dfn[x],dfn[y]);z=x;return now; } int main() {scanf("%lld%lld",&n,&q);for(ll i=1;i<n;++i){scanf("%lld%lld%lld",&x,&y,&z);add(x,y,z);add(y,x,z);}dep[1]=1;fa[1]=1;dfs1(1);dfs2(1,1);while(q--){scanf("%lld",&x);if(x&1){scanf("%lld%lld",&x,&y);node g=ask(x,y);sum=0;num=dep[x]-dep[z]+dep[y]-dep[z]+1;for(ll i=0;i<10;++i)sum+=(1<<i)*(num-g.a[i])*g.a[i];printf("%lld\n",sum);}else{scanf("%lld%lld%lld",&x,&y,&z);if(dep[x]<dep[y])swap(x,y);T.chg(1,1,n,dfn[x],low[x],vv[x]^z);vv[x]=z;}}return 0; }

    總結

    以上是生活随笔為你收集整理的【树链剖分】洛谷树(P3401)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 日日夜夜精 | 欧洲亚洲视频 | 午夜电影你懂的 | 色屁屁ts人妖系列二区 | 国产精品一区二区麻豆 | 肥熟女一区二区三肥熟女 | 一区二区三区日本视频 | 日本黄网站色大片免费观看 | 三级毛毛片 | 永久免费精品视频 | 欧美 日韩 国产 一区 | 又大又粗又爽18禁免费看 | 成人91视频| 少妇喷潮明星 | 久久岛国 | 国产精品高潮呻吟久久久 | 日韩人妻精品一区二区三区 | 人妻少妇精品一区二区 | 欧洲精品久久久 | 永久免费在线观看av | 久久久久久久久99 | 五月激情综合 | 伊人久久久久久久久久久久久 | 美女操出白浆 | 他趴在我两腿中间添得好爽在线看 | 韩产日产国产欧产 | 国产午夜精品免费一区二区三区视频 | www久久精品 | 国产理论av | 国产一区欧美二区 | 中日韩av在线 | 色窝av| 快色在线| 爱综合网 | 日日操狠狠操 | 毛片毛片毛片毛片毛片毛片毛片 | 少妇毛片一区二区三区 | 求av网址 | av免费看片| 国产精品玖玖玖 | 看黄色的网站 | 国产黄色片在线观看 | 亚洲乱码国产乱码精品精大量 | 一本大道东京热无码aⅴ | 中文字幕一区二区久久人妻网站 | 国产 中文 字幕 日韩 在线 | 美女黄页网站 | 少妇aaaa| 一区二区三区免费观看视频 | 性生生活性生交a级 | 全黄毛片 | 俺去俺来也在线www色官网 | 亚洲一区影院 | 91在线无精精品入口 | 亚洲一区二区成人 | 日韩不卡免费 | 校园春色综合网 | 国产毛片一区二区 | 久久人人爽人人爽人人片 | 人人干网站 | 亚洲精品66 | a在线免费观看 | 激情小视频 | 一级视频在线免费观看 | 小泽玛利亚一区二区三区视频 | 欧美日本亚洲韩国国产 | 久久综合激的五月天 | 91色国产| 激情五月在线观看 | 日韩一区二区三免费高清在线观看 | 亚洲男人天堂2024 | 中文字幕在线视频不卡 | 欧美国产日韩一区 | 久草久操 | 综合久久国产 | 日韩无码精品一区二区 | 免费在线观看成年人视频 | 精品人妻无码一区二区三 | 欧美一级片免费看 | 欧美一区二区区 | 男人的天堂视频在线观看 | 麻豆短视频在线观看 | 无码人妻一区二区三区在线 | 欧美色图综合网 | 免费黄色av| 成人深夜福利视频 | 伊人网综合视频 | 激情视频免费观看 | 免费在线观看中文字幕 | av我不卡| 外国一级片 | 初尝情欲h名器av | 午夜日韩欧美 | 国产特级片 | 中文字幕欧美一区 | 国产一区二区在线免费观看视频 | 国产精品12区 | 中文字幕一区二区三区久久久 | 浓精喷进老师黑色丝袜在线观看 |