博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2120 数颜色 带修改莫队
阅读量:6836 次
发布时间:2019-06-26

本文共 1524 字,大约阅读时间需要 5 分钟。

带修改莫队,每次查询前调整修改

#include
#include
#include
#include
#include
#define N 20005using namespace std;int n,m,nn,a[N],be[N],l,r,num[1000005],tot,qq,cc;bool vis[N];struct Change{ int pos,nxt,pre;}ch[1005];struct Query{ int l,r,tim,id,ans;}qr[10005];bool cmp1(Query a,Query b){ if(be[a.l]==be[b.l]) return a.r
=l&&pos<=r){ if(!(--num[a[pos]])) tot--; if(++num[now]==1) tot++; } a[pos]=now;}void update(int pos){ if(vis[pos]){ vis[pos]=0; if(!(--num[a[pos]])) tot--; return ; } if(!vis[pos]){ vis[pos]=1; if(++num[a[pos]]==1) tot++; return ; }}void work(){ l=1,r=0,tot=0; qr[0].tim=cc; for(int i=1;i<=qq;i++){ //printf("%d %d %d %d\n",qr[i].l,qr[i].r,qr[i].id,qr[i].tim); for(int j=qr[i-1].tim+1;j<=qr[i].tim;j++) change(ch[j].pos,ch[j].nxt); for(int j=qr[i-1].tim;j>qr[i].tim;j--) change(ch[j].pos,ch[j].pre); while(l
qr[i].l) update(--l); while(r
qr[i].r) update(r--); qr[i].ans=tot; }}int main(){ scanf("%d%d",&n,&m); nn=(int)sqrt(n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); be[i]=(i-1)/nn+1; } char s; int aa,bb; for(int i=1;i<=m;i++) { s=getchar(); while(s!='Q'&&s!='R')s=getchar(); scanf("%d%d",&aa,&bb); if(s=='R'){ ch[++cc].pos=aa; ch[cc].nxt=bb; ch[cc].pre=a[aa]; a[aa]=bb; } if(s=='Q'){ qr[++qq].tim=cc; qr[qq].l=aa; qr[qq].r=bb; qr[qq].id=qq; } } sort(qr+1,qr+qq+1,cmp1); work(); sort(qr+1,qr+qq+1,cmp2); for(int i=1;i<=qq;i++) printf("%d\n",qr[i].ans); return 0;}

转载于:https://www.cnblogs.com/Ren-Ivan/p/7746740.html

你可能感兴趣的文章
三步快速解决dll冲突问题
查看>>
vue
查看>>
【cl】找不到火狐Cannot find firefox binary in PATH
查看>>
移动端无法复制:使用clipboard.js碰到的一个小问题
查看>>
程序员常去的103个网站
查看>>
联想的amd电脑,Debian8.8开机后亮度值始终最大,尝试过各种方法,始终无法解决,最后debian8.8在安装开源驱动后,成功调节...
查看>>
debian8修改kde桌面语言
查看>>
PHP对于数据库的基本操作——更新数据
查看>>
How HashMap works in Java
查看>>
洛谷P2057 善意的投票
查看>>
UVa11401 Triangle Counting
查看>>
MongoDB
查看>>
Matlab DIP(瓦)ch11表示与描述练习
查看>>
Sicily/1203. The Cubic End
查看>>
进程监控树。
查看>>
如何将ToolBar 样式设置Title文字水平居中
查看>>
Maven 核心原理
查看>>
UVA 1613 K-Graph Oddity
查看>>
‘ActiveX component can’t create object解决方法
查看>>
IIS启用.net2.0
查看>>