题目链接

如果没有这个修改操作,那么就可以主席树/树状数组乱搞,可以没有如果QAQ。

所以选择莫队来乱搞这个修改操作。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxm = 1e6 + 10;
 4 const int maxn = 133334;
 5 typedef long long ll;
 6 int a[maxm], p[maxm], now[maxm], color[maxm];
 7 struct Q {
 8     int l, r, tim, id;
 9 }q[maxm];
10 struct C {
11     int pos, now, old;
12 }c[maxm];
13 bool cmp(Q a, Q b) {
14     return p[a.l] == p[b.l] ? (p[a.r] == p[b.r] ? a.tim < b.tim : a.r < b.r) : a.l < b.l;
15 }
16 int Ans, ans[maxm], l, r, t;
17 void revise(int x, int val) {
18     color[x] += val;
19     if (val > 0)
20         Ans += color[x] == 1;
21     if (val < 0)
22         Ans -= color[x] == 0;
23 }
24 void go(int x, int d) {
25     if (l <= x && x <= r)
26         revise(d, 1), revise(a[x], -1);
27     a[x] = d;
28 }
29 int main() {
30     int n, m;
31     scanf("%d%d", &n, &m);
32     Ans = r = t = 0, l = 1;
33     int len = pow(n, 0.666666), lenq = 0, lenc = 0;
34     for (int i = 1; i <= n; i++)
35         scanf("%d", &a[i]), now[i] = a[i], p[i] = i / len + 1;
36     char s[3];
37     int x, y;
38     for (int i = 1; i <= m; i++) {
39         scanf("%s%d%d", s, &x, &y);
40         if (s[0] == 'Q') ++lenq, q[lenq] = { x, y, lenc, lenq };
41         if (s[0] == 'R') ++lenc, c[lenc] = { x, y, now[x] }, now[x] = y;
42     }
43     sort(q + 1, q + 1 + lenq, cmp);
44     for (int i = 1; i <= lenq; i++) {
45         while (t < q[i].tim)go(c[t + 1].pos, c[t + 1].now), t++;
46         while (t > q[i].tim)go(c[t].pos, c[t].old), t--;
47         while (l < q[i].l)revise(a[l], -1), l++;
48         while (l > q[i].l)revise(a[l - 1], 1), l--;
49         while (r < q[i].r)revise(a[r + 1], 1), r++;
50         while (r > q[i].r)revise(a[r], -1), r--;
51         ans[q[i].id] = Ans;
52     }
53     for (int i = 1; i <= lenq; i++)
54         printf("%d\n", ans[i]);
55 }

转载于:https://www.cnblogs.com/sainsist/p/11551539.html

[Bzoj2120]数颜色相关推荐

  1. BZOJ2120 数颜色 【带修改莫队】

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MB Submit: 6579  Solved: 2625 [Submit][Status][Discus ...

  2. python使用matplotlib可视化:设置坐标轴的范围、设置主次坐标轴刻度、坐标轴刻度显示样式、坐标轴刻度数颜色、小数点位数、坐标轴刻度网格线、线条类型、数据点形状标签、文本字体、颜色、大小等

    python使用matplotlib可视化:设置坐标轴的范围.设置主次坐标轴刻度.坐标轴刻度显示样式.坐标轴刻度数颜色.小数点位数.坐标轴刻度网格线.线条类型.数据点形状标签.文本字体.颜色.大小等 ...

  3. The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)

    J. Jewel Grab Tartarus _Wallace_ 转化询问:对于一个询问 [s,k],找到一个最长的区间 [s,t],满足区间中出现次数超过一次的元素,的出现次数减一,的和,不超过 k ...

  4. 2120: 数颜色(带修莫队)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2120 2120: 数颜色 Time Limit: 6 Sec  Memory Limit ...

  5. 【算法讲20:Dsu on Tree】树上数颜色 | Lomsat gelral

    [算法讲20:Dsu on Tree] [例一:树上数颜色] · 暴力做法 · · 考虑优化 · ⌈ D s u o n T r e e ⌋ \lceil Dsu\ on\ Tree\rfloor ⌈ ...

  6. P3939 数颜色 (权值线段树)

    题目链接: P3939 数颜色 大致题意 略 解题思路 权值线段树 对于这个题, 由于询问的是, 对于c颜色, [l, r]区间有多少该颜色的兔子. 相当于每次询问的就是一种颜色的区间查询. 假设颜色 ...

  7. 莫队入门例题之持久化莫队:2120: 数颜色

    ·述大意:        多个区间询问,询问[l,r]中颜色的种类数.可以单点修改颜色. ·分析: 莫队可以修改?那不是爆炸了吗. 这类爆炸的问题被称为带修莫队(可持久化莫队). 按照美妙类比思想,可 ...

  8. 洛谷P3939 数颜色 vector乱搞

    洛谷P3939 数颜色 标签 vector乱搞 简明题意 给一个序列(n <= 3e5),现需要你支持两种操作. 询问区间[L,R]中有多少个值为x的数 交换第k和k+1个数 思路 首先,这题需 ...

  9. [国家集训队]数颜色

    [国家集训队]数颜色 题解 很水的一道带修莫队板子题. 我们只需要将操作时间看作是当前询问的第三维,排序后跑莫队即可. 三维莫队块长为n23n^{\frac{2}{3}}n32​时时间复杂度是最优的, ...

  10. 【BZOJ2120】数颜色,带修莫队

    Time:2016.09.08 Author:xiaoyimi 转载注明出处谢谢 思路: 第一次写带修莫队 感觉还是挺简单的 每一次的修改都是一个时间的变动,即修改一次,时间+1(s) 没有修改的查询 ...

最新文章

  1. 腾讯的Tendis能否干掉Redis,用了什么牛逼的技术呢?
  2. BTC行情分析,BCH一枝独秀秀全场
  3. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
  4. Spring IOC实现
  5. 重新理解@Resource注解
  6. Python基础(4):类
  7. 如何在 SAP Fiori Elements List Report 表格工具栏里增添新的自定义按钮
  8. python二维数组操作_Python二维数组应用与操作
  9. C++关联容器,STL关联容器
  10. 成也炒作,败也炒作?孙宇晨遭遇最大信任危机
  11. 可靠信道传输2.0 2.1 3.0
  12. PHP弱类型安全问题总结
  13. 小米手机怎么在图片显示定位服务器,小米浏览器中,图片导致fixed定位的元素无法显示...
  14. 生活游记——泰国自由行
  15. 土地日度交易数据2000-2022
  16. Android之数据统计TalkingData集成
  17. 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机工程硕士排名第8(2020年TFE Times排名)...
  18. TikTok干货分享:创作者基金申请流程及常见问题解答
  19. 算法复杂度和合并果子题解
  20. 编辑状态打开mysql表,Mysql 数据库 基本操作以及调用(一)

热门文章

  1. C#实现不安装Oracle客户端访问远程服务器数据
  2. 信息图表是如何炼成的(二):图标与线条
  3. python访问webservice接口
  4. Android ANR原因以及开发时如何预防
  5. [转]vector iterator not incrementable 的问题
  6. sql生成(查询数据的存储过程)代码的存储过程
  7. OpenCV之图像腐蚀
  8. EXE文件结构及读取方法
  9. kickstart无人值守自动安装操作系统
  10. RHEL7下Nginx配置文件详解(二)