http://www.cnblogs.com/autsky-jadek/p/4020296.html

同bzoj2120。

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. int n,m,sz,sum,l[],r[],num[],pre[],preb[],a[],x,y,pos[];
  7. int Res,Num;char C,CH[];
  8. inline int G()
  9. {
  10. Res=;C='*';
  11. while(C<''||C>'')C=getchar();
  12. while(C>=''&&C<=''){Res=Res*+(C-'');C=getchar();}
  13. return Res;
  14. }
  15. inline void P(int x)
  16. {
  17. Num=;if(!x){putchar('');puts("");return;}
  18. while(x>)CH[++Num]=x%,x/=;
  19. while(Num)putchar(CH[Num--]+);
  20. puts("");
  21. }
  22. void makeblock()
  23. {
  24. sz=sqrt((double)n*log2(n)); if(!sz) sz=;
  25. for(sum=;sum*sz<n;sum++)
  26. {
  27. l[sum]=(sum-)*sz+;
  28. r[sum]=sum*sz;
  29. for(int i=l[sum];i<=r[sum];i++)
  30. num[i]=sum;
  31. }
  32. l[sum]=sz*(sum-)+;
  33. r[sum]=n;
  34. for(int i=l[sum];i<=r[sum];i++)
  35. num[i]=sum;
  36. }
  37. void makepre()
  38. {
  39. for(int i=;i<=n;i++) {pre[i]=pos[a[i]]; pos[a[i]]=i;}
  40. memcpy(preb,pre,sizeof(pre));
  41. for(int i=;i<=sum;i++) sort(pre+l[i],pre+r[i]+);
  42. }
  43. inline void query()
  44. {
  45. int res=;
  46. if(num[x]+>=num[y]) {for(int i=x;i<=y;i++) if(preb[i]<x) res++;}
  47. else
  48. {
  49. for(int i=x;i<=r[num[x]];i++) if(preb[i]<x) res++;
  50. for(int i=l[num[y]];i<=y;i++) if(preb[i]<x) res++;
  51. for(int i=num[x]+;i<num[y];i++) res+=lower_bound(pre+l[i],pre+r[i]+,x)-(pre+l[i]);
  52. }
  53. P(res);
  54. }
  55. inline void update()
  56. {
  57. int t=;
  58. for(int i=x+;i<=n;i++)
  59. if(a[i]==y)
  60. {*lower_bound(pre+l[num[i]],pre+r[num[i]],preb[i])=x; preb[i]=x;
  61. sort(pre+l[num[i]],pre+r[num[i]]+); break;}
  62. a[]=y;
  63. for(int i=x-;i>=;i--)
  64. if(a[i]==y)
  65. {*lower_bound(pre+l[num[x]],pre+r[num[x]],preb[x])=i; preb[x]=i;
  66. sort(pre+l[num[x]],pre+r[num[x]]+); break;}
  67. int t2=a[x]; a[x]=y;
  68. for(int i=x;i>=;i--)
  69. if(a[i]==t2)
  70. {t=i; break;}
  71. for(int i=x+;i<=n;i++)
  72. if(a[i]==t2)
  73. {*lower_bound(pre+l[num[i]],pre+r[num[i]],preb[i])=t; preb[i]=t;
  74. sort(pre+l[num[i]],pre+r[num[i]]+); break;}
  75. }char op[];
  76. int main()
  77. {
  78. n=G();m=G();
  79. for(int i=;i<=n;i++) a[i]=G();
  80. makeblock(); makepre();
  81. for(int i=;i<=m;i++)
  82. {
  83. scanf("%s",op);x=G();y=G();
  84. if(op[]=='Q') query();
  85. else update();
  86. }
  87. return ;
  88. }

【分块】bzoj2453 维护队列的更多相关文章

  1. BZOJ2453: 维护队列

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 183  Solved: 89[Submit][Status] Descripti ...

  2. [bzoj2453]维护队列_带修改莫队

    维护队列 bzoj-2453 题目大意:给定一个n个数序列,支持查询区间数的种类数,单点修改.不强制在线. 注释:$1\le n,m\le 10^5$. 想法: 带修改莫队裸题. 如果没有修改操作的话 ...

  3. [BZOJ2453]维护队列|分块

    Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会 ...

  4. [BZOJ2120] 数颜色 && [bzoj2453] 维护队列(莫队 || 分块)

    传送门 只有第一个,第二个权限题. 分块,然而wa,没看出来错在哪里,有时间再看. #include <cmath> #include <cstdio> #include &l ...

  5. BZOJ2453维护队列&&BZOJ2120数颜色

    2016-05-28 11:20:22 共同的思路: 维护某种颜色上一次在哪里出现pre,可以知道当pre<询问的l时更新答案 块内按照pre排序 修改的时候重新O(n)扫一遍,如果和之前的不一 ...

  6. bzoj2120: 数颜色 &&bzoj2453: 维护队列

    题目大意: 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会依据个人喜好 ...

  7. 【BZOJ2453】维护队列/【BZOJ2120】数颜色 分块

    [BZOJ2453]维护队列 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色 ...

  8. 【BZOJ-2453&2120】维护队列&数颜色 分块 + 带修莫队算法

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 653  Solved: 283[Submit][Status][Discuss] ...

  9. 【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)

    2453: 维护队列 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有 ...

随机推荐

  1. Hyperledger Fabric架构详解

    区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...

  2. Wpremig和Jhadgre的藏宝图(最大流+二分)

    Wpremig和Jhadgre的藏宝图 题目链接:https://ac.nowcoder.com/acm/contest/333/M Description: Jhadgre在生日那天收到了一张神秘的 ...

  3. 1、linux下mysql5.5.20安装过程报错汇总

    1.Access denied for user 'root'@'localhost' (using password: YES) 这个提示是因为root帐户默认不开放远程访问权限,所以需要修改一下相 ...

  4. 数据结构之(HDU2051 Bitset)

    Problem Description Give you a number on base ten,you should output it on base two.(0 < n < 10 ...

  5. 最大流算法 ISAP 模板 和 Dinic模板

    ISAP // UVa11248 Frequency Hopping:使用ISAP算法,加优化 // Rujia Liu struct Edge { int from, to, cap, flow; ...

  6. 动态规划:DAG-嵌套矩形

    据说DAG是动态规划的基础,想一想还真的是这样的,动态规划的所有状态和转移都可以归约成DAG DAG有两个典型模型,一个是嵌套矩形问题一个是硬币问题,这里仅介绍一个嵌套矩形问题 等二轮复习的时候再补上 ...

  7. TDS开启log TDS开启SSL

    参考: http://www.ibm.com/developerworks/tivoli/library/t-tds-perf/ 1. 编辑ldif文件如下 dn: cn=Audit, cn=Log ...

  8. 【BZOJ3680】吊打xxx [模拟退火]

    吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description gty又虐了一场比赛,被虐的蒟蒻 ...

  9. noip2013 提高组

    T1 转圈游戏 题目传送门 果不其然 第一题还是模拟题 一波快速幂解决问题 #include<cstdio> #include<cstring> #include<alg ...

  10. 【Luogu P3834】可持久化数组(可持久化线段树)

    题目链接 可持久化线段树模板题. 这里总结一下可持久化线段树. 可持久化数据结构就是能恢复历史状态的数据结构,比如可持久化\(Trie\),并查集,平衡树. 可持久化数组是最基础的,这里通过可持久化线 ...