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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【[TJOI2018]异或】

發(fā)布時間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【[TJOI2018]异或】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫板子了,可持久化\(Trie\)的板子了

其實和主席樹寫法類似,還是存好左右兒子之后存好權(quán)值

之后差分去查詢就好了

這道題第一問我們直接\(dfs\)序轉(zhuǎn)化成區(qū)間

第二問搞成\(x,y,lca(x,y),fa[lca]\)之后一起差分就好了

代碼

#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #define maxn 100005 #define re register #define LL long long #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) inline int read() {char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x; } struct E{int v,nxt;}e[maxn<<1]; int n,m,__,num,bit[35],cnt; int rt[maxn],ch[maxn*35*2][2],v[maxn*35*2],a[maxn],Rt[maxn]; int head[maxn],top[maxn],son[maxn],sum[maxn],fa[maxn],to[maxn],_to[maxn],deep[maxn]; inline void add(int x,int y) {e[++num].v=y;e[num].nxt=head[x];head[x]=num;} int change(int pre,int t) {int root=++cnt;int val=bit[t];v[root]=v[pre]+1;if(!t) return root;ch[root][val^1]=ch[pre][val^1];ch[root][val]=change(ch[pre][val],t-1);return root; } int query(int l,int r,int t) {if(!t) return 0;int val=bit[t];int now=v[ch[r][val^1]]-v[ch[l][val^1]];if(now) return (1<<(t-1))+query(ch[l][val^1],ch[r][val^1],t-1);return query(ch[l][val],ch[r][val],t-1); } int ask(int a,int b,int c,int d,int t) {if(!t) return 0;int val=bit[t];int now=v[ch[a][val^1]]+v[ch[b][val^1]]-v[ch[c][val^1]]-v[ch[d][val^1]];if(now) return (1<<(t-1))+ask(ch[a][val^1],ch[b][val^1],ch[c][val^1],ch[d][val^1],t-1);return ask(ch[a][val],ch[b][val],ch[c][val],ch[d][val],t-1); } void dfs1(int x) {int maxx=-1;sum[x]=1;for(re int i=head[x];i;i=e[i].nxt)if(!deep[e[i].v]){deep[e[i].v]=deep[x]+1;int now=0,t=a[e[i].v];memset(bit,0,sizeof(bit));while(t) bit[++now]=(t&1),t>>=1;Rt[e[i].v]=change(Rt[x],32);fa[e[i].v]=x;dfs1(e[i].v);sum[x]+=sum[e[i].v];if(sum[e[i].v]>maxx) maxx=sum[e[i].v],son[x]=e[i].v;} } void dfs2(int x,int topf) {top[x]=topf;to[++__]=x;_to[x]=__;if(!son[x]) return;dfs2(son[x],topf);for(re int i=head[x];i;i=e[i].nxt) if(!top[e[i].v]) dfs2(e[i].v,e[i].v); } inline int LCA(int x,int y) {while(top[x]!=top[y]){if(deep[top[x]]<deep[top[y]]) std::swap(x,y); x=fa[top[x]];}if(deep[x]<deep[y]) return x;return y; } int main() {n=read(),m=read();for(re int i=1;i<=n;i++) a[i]=read();int x,y,opt,val;for(re int i=1;i<n;i++) x=read(),y=read(),add(x,y),add(y,x);deep[1]=1,dfs1(1),dfs2(1,1);for(re int i=1;i<=n;i++) {int now=0,t=a[to[i]];memset(bit,0,sizeof(bit));while(t) bit[++now]=(t&1),t>>=1;rt[i]=change(rt[i-1],32);}while(m--){opt=read();x=read();if(opt==1) val=read();if(opt==2) y=read(),val=read();int now=0;memset(bit,0,sizeof(bit));while(val) bit[++now]=(val&1),val>>=1;if(opt==1) printf("%d\n",query(rt[_to[x]-1],rt[_to[x]+sum[x]-1],32));if(opt==2) {int lca=LCA(x,y);printf("%d\n",ask(Rt[x],Rt[y],Rt[lca],Rt[fa[lca]],32));}}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/asuldb/p/10252615.html

總結(jié)

以上是生活随笔為你收集整理的【[TJOI2018]异或】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人在线免费观看 | 扒开女人屁股进去 | 一区二区福利电影 | 日本a在线 | 天天艹天天 | 亚洲精品国产精品国 | 成人在线观 | 97视频免费在线观看 | 亚洲免费成人网 | 色屁屁ts人妖系列二区 | 国产在线免费av | 特黄做受又粗又大又硬老头 | 波多野结衣高清电影 | 亚洲一卡一卡 | 黄页网站免费在线观看 | 成人性生交大片免费看r链接 | 一区视频在线播放 | 国产免费黄色网址 | 三叶草欧洲码在线 | h视频免费在线观看 | 极品91尤物被啪到呻吟喷水 | 黑人巨大精品 | 一级大片免费观看 | 亚洲无线视频 | 国产一区黄色 | 日本不卡一区二区三区在线观看 | 黄色长视频| 最新三级网站 | 国产一级二级视频 | 韩国三级视频 | 在线视频二区 | 韩国伦理大片 | avtt中文字幕 | julia一区二区三区中文字幕 | 国产suv精品一区二区6 | 99久久成人| 人人爽人人 | 深夜成人福利视频 | 欧美色视| 日日骑| 奇米四色影视 | 成人在线免费观看网站 | 真实人妻互换毛片视频 | 欧美成人午夜精品免费 | 亚洲成人麻豆 | 精品蜜桃av | 毛片专区| 成年人黄色一级片 | 日本激情视频在线观看 | 国产婷婷色一区二区三区 | 国产又爽又色 | 六月丁香激情综合 | 成年网站在线观看 | 精品爆乳一区二区三区无码av | 成人网站免费观看 | 一区二区三区影院 | 99天堂网| 日本免费黄色小视频 | 肉色丝袜脚交一区二区 | 国产13页 | 亚洲国产精品一 | 三级免费看 | 告诉我真相俄剧在线观看 | 亚洲成人生活片 | 超碰99在线观看 | 日本爽妇网 | 国产日日日 | 欧美日韩精品亚洲精品 | 国产传媒中文字幕 | 蜜桃久久精品成人无码av | 日本在线中文字幕专区 | 国产精品久久久精品 | 99久久精品国产一区二区三区 | 黄色av三级| 色xxxxx | 国产精品电影在线观看 | 亚洲国产中文字幕在线观看 | 在线观看你懂的网址 | 免费黄色大片 | 我和岳m愉情xxxⅹ视频 | 亚洲精品www久久久久久广东 | 日韩阿v | 人人插人人看 | 午夜无遮挡 | 亚洲精品一区二区口爆 | 九九热视 | 午夜网 | 国产精品亚洲五月天丁香 | 黄色片网站在线看 | 美女扒开内看个够网站 | 国产传媒av在线 | 日日摸日日碰 | 青青草狠狠干 | av 日韩 人妻 黑人 综合 无码 | 亚洲精品中字 | 久久久www免费人成人片 | 国产日韩一区二区在线观看 | 美腿丝袜一区二区三区 | 91干视频 |