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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj 4184 shallot 时间线建线段树+vector+线性基

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj 4184 shallot 时间线建线段树+vector+线性基 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目大意

n個時間點
每個時間點可以插入一個權(quán)值或刪除一個權(quán)值
求每個時間點結(jié)束后異或最大值

分析

異或最大值用線性基
但是線性基并不支持刪除操作
我們可以對時間線建一棵線段樹
離線搞出每個權(quán)值出現(xiàn)的區(qū)間
cover一下
先用vector存起來
最后每個時間點有的權(quán)值,就是線段樹上
該葉子節(jié)點的所有祖先的權(quán)值
DFS一下動態(tài)維護一個只用插入的線性基就好了

注意

考慮如果手上有兩個A權(quán)值,刪除一個時怎么處理
開多一個num存數(shù)量,fir存權(quán)值最早出現(xiàn)位置
于是數(shù)據(jù)貌似并沒有這種情況?。。。

solution

#include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cmath> #include <algorithm> #include <vector> using namespace std; const int M=500007; const int Bit=30;inline int rd(){int x=0;bool f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=0;for(;isdigit(c);c=getchar()) x=x*10+c-48;return f?x:-x; }int n; int a[M],val[M],tt; int ty[M]; int fir[M],num[M]; int ans[M];struct Base{int v[Bit+1];Base(){memset(v,0,sizeof(v));}int getmx(){int res=0;for(int i=Bit;i>=0;i--) if(v[i]) res^=v[i];return res;} };Base operator +(Base x,int y){int i,ps=-1;for(i=Bit;i>=0;i--)if(y>>i&1){if(x.v[i]==0 && ps==-1) ps=i;else y^=x.v[i];}if(~ps){x.v[ps]=y;for(i=Bit;i>ps;i--)if(x.v[i]>>ps&1) x.v[i]^=y;}return x; }struct pai{int d,id;pai(int dd=0,int ii=0){d=dd;id=ii;} }pp[M];bool cmp(pai x,pai y){return x.d<y.d; }vector<int>hd[M<<2];void ins(int x,int l,int r,int tl,int tr,int d){if(tl<=l&&r<=tr){hd[x].push_back(d);return;}int mid=l+r>>1;if(tl<=mid) ins(x<<1,l,mid,tl,tr,d);if(mid<tr) ins(x<<1|1,mid+1,r,tl,tr,d); }void DFS(int x,int l,int r,Base nw){int i;for(i=1;i<=hd[x].size();i++) nw=nw+hd[x][i-1];if(l==r){ans[l]=nw.getmx();return ;}int mid=l+r>>1;DFS(x<<1,l,mid,nw);DFS(x<<1|1,mid+1,r,nw); }int main(){int i,x;n=rd();for(i=1;i<=n;i++){x=rd();ty[i]=x>0;x=abs(x);pp[i]=pai(x,i);}sort(pp+1,pp+n+1,cmp);pp[0].d=pp[1].d-1;for(i=1;i<=n;i++){if(pp[i].d!=pp[i-1].d) val[++tt]=pp[i].d;a[pp[i].id]=tt;}for(i=1;i<=n;i++){if(ty[i]==1){if(num[a[i]]==0) fir[a[i]]=i;num[a[i]]++;}else{if(num[a[i]]>0) ins(1,1,n, fir[a[i]],i-1, val[a[i]]);num[a[i]]--;}}for(i=1;i<=tt;i++)if(num[i]) ins(1,1,n, fir[i],n, val[i]);Base nw;DFS(1,1,n,nw);for(i=1;i<=n;i++) printf("%d\n",ans[i]);return 0; }

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

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的bzoj 4184 shallot 时间线建线段树+vector+线性基的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国模小丫大尺度啪啪人体 | 苏晴忘穿内裤坐公交车被揉到视频 | 精品欧美一区二区精品少妇 | 国产黄大片 | 性做久久久久久免费观看 | 人妻毛片| 欧美三个黑人玩3p | 国内视频一区二区 | 久久伊人精品视频 | 四虎综合网 | 午夜精品久久久久久久久久久 | 国产一区二区三区免费看 | 91精品人妻一区二区三区蜜桃2 | 熟妇人妻无乱码中文字幕真矢织江 | 国产精品久久久久久久久久久久久久久久久 | 亚洲AV永久无码国产精品国产 | 98成人网| 男人天堂网在线视频 | 色撸撸在线 | 韩日一区二区 | 欧美日韩三级在线 | 日韩人妻一区二区三区蜜桃视频 | 国产黄站| 超碰婷婷 | 国产精品午夜未成人免费观看 | 欧美69精品久久久久久不卡 | 日本高清视频免费观看 | 综合免费视频 | 国产一区二区三区视频在线播放 | 打屁股无遮挡网站 | 中文字幕免费观看视频 | 特级一级黄色片 | 亚洲午夜在线观看 | 在线观看免费视频 | 亚洲福利网站 | 日韩欧美第一区 | 长篇高h乱肉辣文 | 免费se99se | 免费观看视频在线观看 | 一区三区视频 | 少妇媚药按摩中文字幕 | 91成人免费 | 欧美绿帽合集videosex | 天天看a | 永久免费av | 成人依依网 | av片国产 | 肉丝肉足丝袜一区二区三区 | 五月天黄色网 | 久久特级毛片 | 国产在线美女 | 男女互操视频 | 97精品熟女少妇一区二区三区 | 色在线视频观看 | 国产一区二区三区四区视频 | 天天曰 | 一级激情视频 | 好屌妞视频这里只有精品 | 手机在线观看av网站 | 中文字幕有码在线观看 | 在线天堂中文字幕 | 一本之道av | 日本一区二区三区视频在线播放 | 国产欧美日韩专区 | 超级黄色录像 | 亚洲精品国产精品国自产网站 | 日本不卡视频一区 | 欧美老熟| 99热超碰在线 | 免费一区二区三区 | 在线观看欧美精品 | 久久精品久久久精品美女 | 久久久久人妻一区精品色欧美 | 最新激情网站 | 日韩精品乱码久久久久久 | 十八禁毛片 | 人人妻人人澡人人爽国产一区 | 婷婷一区二区三区四区 | 久久蜜桃av | 国产尤物视频在线 | www.4虎| 日韩激情小视频 | 91国内精品久久久 | 免费看片91 | 久久久久亚洲av成人无码电影 | heyzo北岛玲在线播放 | 99视频免费在线观看 | 免费看国产一级片 | 色a视频 | 国产精品国产一区二区 | 一区二区三区国产av | 亚洲精品美女视频 | 亚洲黄色中文字幕 | 精精国产xxxx视频在线播放 | 28一20岁女人一级 | ass日本寡妇pics | 中文字幕第一页在线播放 | 久久爱一区 | av一区二区三区在线观看 |