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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【bzoj4939】【YNOI2016】掉进兔子洞(莫队)

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj4939】【YNOI2016】掉进兔子洞(莫队) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

您正在打galgame,然后突然發現您今天太頹了,于是想寫個數據結構題練練手: 一個長為?n?的序列?a。

有?m?個詢問,每次詢問三個區間,把三個區間中同時出現的數一個一個刪掉,問最后三個區間剩下的數的個數和,詢問獨立。 注意這里刪掉指的是一個一個刪,不是把等于這個值的數直接刪完,比如三個區間是?[1,2,2,3,3,3,3]?,? [1,2,2,3,3,3,3]?與? [1,1,2,3,3],就一起扔掉了?1?個?1,1?個?2,2?個?3。

輸入輸出格式

輸入格式:

?

第一行兩個數表示?n?,?m。

第二行?n個數表示?a[i]?。

之后?m?行,每行?6?個數?l1???,?r1???,?l2,?r2???,?l3???,?r3???表示這三個區間。

?

輸出格式:

?

對于每個詢問,輸出一個數表示答案。

?

輸入輸出樣例

輸入樣例#1:?復制 5 2 1 2 2 3 3 1 2 2 3 3 4 1 5 1 5 1 5 輸出樣例#1:?復制 3 0

說明

n , m <= 100000 , 1 <= a[i] <= 1000000000

題解

  大毒瘤題名不虛傳……

  做莫隊的時候因為先del再add已經快RE到死了……

  據某加藤大佬說這題一看就是莫隊+bitset維護并集,然而我啥都看不出來……

  先把原數組給離散,然后總共只有$10^5$個數,可以對每一個詢問維護一個bitset,表示每一位有幾個,然后只要把三個詢問的bitset并起來就行了。然而bitset怎么表示數的個數呢?我們可以給每一個數很多位置,位置數為它在原數組中的個數。比方說1,1,4,3,1,那么我們就給1這個數字3個位置,做莫隊的時候,維護一個bitset,設當前已經有x個1,且1在bitset中的位置為1,那么要add的時候,就讓第x+1位變為1,表示加了一個1,del的話,就讓第x位變為0,表示少了一個1,同時更新x

  然后這樣有可能兩個數的區間重疊,那么我們在離散化的之后可以不去重,直接用在排序后的數組的位置表示新數,這樣每一個數就不會和其他區間重疊了

1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<bitset> 5 #include<algorithm> 6 #include<cstring> 7 #include<cmath> 8 using namespace std; 9 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 10 char buf[1<<21],*p1=buf,*p2=buf; 11 inline int read(){ 12 #define num ch-'0' 13 char ch;bool flag=0;int res; 14 while(!isdigit(ch=getc())) 15 (ch=='-')&&(flag=true); 16 for(res=num;isdigit(ch=getc());res=res*10+num); 17 (flag)&&(res=-res); 18 #undef num 19 return res; 20 } 21 char sr[1<<21],z[20];int C=-1,Z; 22 inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;} 23 inline void print(int x){ 24 if(C>1<<20)Ot();if(x<0)sr[++C]=45,x=-x; 25 while(z[++Z]=x%10+48,x/=10); 26 while(sr[++C]=z[Z],--Z);sr[++C]='\n'; 27 } 28 const int N=1e5+5,NN=27000; 29 int n,m,len,rt[N],ans[N]; 30 bitset<N> f[NN+5],tmp; 31 int a[N],b[N],L1[N],R1[N],L2[N],R2[N],L3[N],R3[N],cnt[N],l,r,tot; 32 bool flag[NN+5]; 33 struct node{ 34 int l,r,id; 35 node(){} 36 node(int l,int r,int id):l(l),r(r),id(id){} 37 }q[N]; 38 inline bool operator <(node a,node b){ 39 return rt[a.l]==rt[b.l]?rt[a.l]&1?a.r<b.r:a.r>b.r:rt[a.l]<rt[b.l]; 40 } 41 inline void init(){ 42 memset(cnt,0,sizeof(cnt)); 43 memset(flag,0,sizeof(flag)); 44 tmp.reset(); 45 l=1,r=0,tot=0; 46 } 47 inline void add(int x){ 48 tmp[x+cnt[x]]=1,++cnt[x]; 49 } 50 inline void del(int x){ 51 tmp[x+cnt[x]-1]=0,--cnt[x]; 52 } 53 inline void solve(int lx,int rx){ 54 init(); 55 for(int i=lx;i<=rx;++i){ 56 q[++tot]=node(L1[i],R1[i],i),ans[i]+=R1[i]-L1[i]+1; 57 q[++tot]=node(L2[i],R2[i],i),ans[i]+=R2[i]-L2[i]+1; 58 q[++tot]=node(L3[i],R3[i],i),ans[i]+=R3[i]-L3[i]+1; 59 } 60 sort(q+1,q+1+tot); 61 for(int i=1;i<=tot;++i){ 62 while(l>q[i].l) add(a[--l]); 63 while(r<q[i].r) add(a[++r]); 64 while(l<q[i].l) del(a[l++]); 65 while(r>q[i].r) del(a[r--]); 66 if(!flag[q[i].id-lx+1]) flag[q[i].id-lx+1]=1,f[q[i].id-lx+1]=tmp; 67 else f[q[i].id-lx+1]&=tmp; 68 } 69 for(int i=lx;i<=rx;++i) ans[i]-=f[i-lx+1].count()*3; 70 } 71 int main(){ 72 n=read(),m=read(),len=sqrt(n); 73 for(int i=1;i<=n;++i) a[i]=b[i]=read(),rt[i]=(i-1)/len+1; 74 sort(b+1,b+1+n); 75 for(int i=1;i<=n;++i) a[i]=lower_bound(b+1,b+1+n,a[i])-b; 76 for(int i=1;i<=m;++i) 77 L1[i]=read(),R1[i]=read(),L2[i]=read(),R2[i]=read(),L3[i]=read(),R3[i]=read(); 78 for(int i=1;i<=m;i+=NN) solve(i,min(m,i+NN-1)); 79 for(int i=1;i<=m;++i) print(ans[i]); 80 Ot(); 81 return 0; 82 }

?

轉載于:https://www.cnblogs.com/bztMinamoto/p/9531585.html

總結

以上是生活随笔為你收集整理的【bzoj4939】【YNOI2016】掉进兔子洞(莫队)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 青青草视频在线观看免费 | 亚洲制服丝袜一区 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 男女激情视频网站 | 欧美日本韩国在线 | 在线免费一区二区 | 精品人伦一区二区三区 | 天天噜日日噜 | 亚洲精品一二三 | 天堂а√在线中文在线 | 精品人妻伦一二三区久 | 国产做受网站 | 韩国三级hd中文字幕 | 国产成人小视频在线观看 | 欧美色欧美 | 69福利视频| 91精品系列 | 日本一本二本三区免费 | 成人免费毛片嘿嘿连载 | 韩国中文字幕在线观看 | 日本男女激情视频 | 亚洲午夜精品一区二区三区他趣 | 精品国产欧美一区二区三区成人 | 欧美顶级metart裸体全部自慰 | 日批av| 成年人激情网站 | 91av毛片 | 国产日韩av在线播放 | 日韩欧美在线视频播放 | 自拍偷拍色图 | 九九热在线观看视频 | 日本裸体动漫 | 色综合中文综合网 | 国产成人 综合 亚洲 | 色综合天| 久久九九国产视频 | 久久久精品久久 | 中文字幕一区二区三 | 天天色天天综合 | 浓精喷进老师黑色丝袜在线观看 | 色91在线| 手机在线观看av网站 | 亚洲精品在线免费播放 | 日少妇av | 极品尤物魔鬼身材啪啪仙踪林 | h片观看 | 亚洲成年人免费观看 | 超碰97在线免费观看 | 日本成人不卡 | 理论片一级 | 97精品一区二区 | 久久久青 | 91麻豆成人精品国产免费网站 | 91天天色| 福利视频一二区 | 精品91av| 色综合天天综合网天天看片 | 国产精品12页 | 能看的av网站 | 龚玥菲一级淫片 | 看片地址 | 在线免费黄色网 | 亚洲成人黄色在线观看 | 免费在线视频一区 | 国产色秀视频 | 日韩乱码人妻无码中文字幕 | 无码人妻一区二区三区线 | 少妇高潮久久久久久潘金莲 | 国产精品久久久久久久妇 | 国产凹凸一区二二区 | 99久久综合| 国产精品久久久久久无人区 | 亚洲男人在线 | 亚洲精品一级二级 | 亚洲欧美国产另类 | 黄色国产毛片 | 就操在线| 精品h | aaaaa级少妇高潮大片免费看 | 成人黄色免费看 | 一级片在线免费播放 | 日本伦理一区 | 一级在线看 | 激烈的性高湖波多野结衣 | 五月天一区二区 | 久久久久久久久久一区二区三区 | 色婷网 | 少妇被躁爽到高潮无码人狍大战 | 亚洲天堂视频一区 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 91精品久久久久久久久久入口 | 欧美色图网站 | 婷婷色婷婷开心五月四房播播 | 国产视频手机在线播放 | 免费观看一区二区三区 | 亚洲精品欧美在线 | 国产成人一区二区三区别 | 日皮视频网站 | www.av视频在线观看 |