[BZOJ 2453]维护队列:带修改莫队
2017-04-10 14:53
369 查看
点击这里查看原题
类似于BZOJ 2120
类似于BZOJ 2120
/* User:Small Language:C++ Problem No.:2453 */ #include<bits/stdc++.h> #define ll long long #define inf 999999999 using namespace std; const int M=1e4+5; int n,m,tot,cnt,num[M*100],ans[M],a[M],b[M],res,pos[M]; bool vis[M]; struct chg{ int o,x,y; }p[M]; struct query{ int id,p,l,r; }q[M]; bool cmp(query a,query b){ return pos[a.l]!=pos[b.l]?pos[a.l]<pos[b.l]:a.r<b.r; } void update(int x){ if(vis[x]){ num[a[x]]--; if(num[a[x]]==0) res--; } else{ num[a[x]]++; if(num[a[x]]==1) res++; } vis[x]^=1; } void change(int x,int k){ if(vis[x]){ update(x); a[x]=k; update(x); } else a[x]=k; } void solve(){ int l=1,r=0,now=0; for(int i=1;i<=cnt;i++){ for(int j=now+1;j<=q[i].p;j++) change(p[j].o,p[j].y); for(int j=now;j>q[i].p;j--) change(p[j].o,p[j].x); for(int j=r+1;j<=q[i].r;j++) update(j); for(int j=r;j>q[i].r;j--) update(j); for(int j=l-1;j>=q[i].l;j--) update(j); for(int j=l;j<q[i].l;j++) update(j); l=q[i].l,r=q[i].r,now=q[i].p; ans[q[i].id]=res; } } int main(){ freopen("data.in","r",stdin);// scanf("%d%d",&n,&m); int t=sqrt(n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); b[i]=a[i]; pos[i]=(i-1)/t+1; } for(int i=1;i<=m;i++){ char op[5]; int x,y; scanf("%s%d%d",op,&x,&y); if(op[0]=='R'){ p[++tot]=(chg){x,b[x],y}; b[x]=y; } else q[++cnt]=(query){cnt,tot,x,y}; } sort(q+1,q+cnt+1,cmp); solve(); for(int i=1;i<=cnt;i++) printf("%d\n",ans[i]); return 0; }
相关文章推荐
- BZOJ.2453.维护队列([模板]带修改莫队)
- bzoj2453 维护队列 & bzoj2120 数颜色 (带修改莫队)
- BZOJ 2120: 数颜色/BZOJ 2453: 维护队列 带修改莫队
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
- [BZOJ2120] 数颜色 && [bzoj2453] 维护队列(莫队 || 分块)
- bzoj 2453 : 维护队列 带修莫队
- Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset
- [BZOJ2453][维护队列][莫队]
- 【bzoj2453】维护队列 分块
- bzoj 2453: 维护队列
- BZOJ 2120: 数颜色 && 2453: 维护队列 【带修莫队版题【也可以学黄学长分块
- 【BZOJ 2453】【JZOJ 2491】维护队列
- 【bzoj 2120】维护队列【bzoj 2453】数颜色 双倍经验!!!
- 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法
- bzoj 2453 维护队列
- 【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)
- [bzoj2453]【NOI2011模拟7.23】维护队列
- 【JZOJ 4594】 Dynamic len &【JZOJ 2491】维护队列(带修改的莫队算法 模板)
- 【BZOJ2453】维护队列/【BZOJ2120】数颜色 分块
- 【BZOJ】【2120】数颜色 & 【2453】维护队列