博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[洛谷P1903][国家集训队]数颜色
阅读量:6344 次
发布时间:2019-06-22

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

题目大意:有$n$支画笔,有两个操作

  1. $Q\;l\;r:$询问$[l,r]$中有几种颜色
  2. $R\;p\;Col:$把第$p$支画笔的颜色改成$Col$

题解:带修莫队,分为$n^{\frac{1}{3}}$个块,每个块$n^{\frac{2}{3}}$个元素,复杂度$O(n^{\frac{5}{3}})$

卡点:读入时,修改的时间赋值错

C++ Code:

#include 
#include
#define maxn 50010#define bl(x) (x >> 10)int n, m, Qcnt, Mcnt;int C[maxn], ans[maxn], cnt[1000010];struct Query { int l, r, t, id; inline bool operator < (const Query &rhs) const { return bl(l) == bl(rhs.l) ? (bl(r) == bl(rhs.r) ? t < rhs.t : r < rhs.r) : l < rhs.l; }} Q[maxn];struct Modify { int pos, t, col;} M[maxn];int l = 0, r = 0, p = 0, res = 0;inline void swap(int &a, int &b) {a ^= b ^= a ^= b;}void modify(int x) { if (M[x].pos >= l && M[x].pos <= r) { res -= --cnt[C[M[x].pos]] == 0; res += cnt[M[x].col]++ == 0; } swap(M[x].col, C[M[x].pos]);}int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &C[i]); for (int i = 1; i <= m; i++) { char op[10]; scanf("%s", op); if (*op == 'Q') { Qcnt++; scanf("%d%d", &Q[Qcnt].l, &Q[Qcnt].r); Q[Qcnt].t = i; Q[Qcnt].id = Qcnt; } else { Mcnt++; scanf("%d%d", &M[Mcnt].pos, &M[Mcnt].col); M[Mcnt].t = i; } } std::sort(Q + 1, Q + Qcnt + 1); for (int i = 1; i <= Qcnt; i++) { while (l > Q[i].l) res += cnt[C[--l]]++ == 0; while (r < Q[i].r) res += cnt[C[++r]]++ == 0; while (l < Q[i].l) res -= --cnt[C[l++]] == 0; while (r > Q[i].r) res -= --cnt[C[r--]] == 0; while (p < Mcnt && M[p + 1].t <= Q[i].t) modify(++p); while (p && M[p].t > Q[i].t) modify(p--); ans[Q[i].id] = res; } for (int i = 1; i <= Qcnt; i++) printf("%d\n", ans[i]); return 0;}

 

转载于:https://www.cnblogs.com/Memory-of-winter/p/9575150.html

你可能感兴趣的文章
成本不足15美元的设备把取款机掏空
查看>>
Nutanix领衔的超融合能带来新存储黄金时代吗?
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《淘宝店铺经营管理一册通》一一1.4 商品发布
查看>>
《数据科学:R语言实现》——2.5 使用Excel文件
查看>>
《NTFS文件系统扇区存储探秘》——1.6 数据区DATA
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一1.3 选择创业的行业
查看>>
《淘宝店铺设计装修一册通》一2.5 抠图工具的简单运用
查看>>