题目传送门

Description

有 \(n\) 个球排在一起,每个球有颜色 \(a_i\),若当前有 \(k\) 个球,则会将所有 \(a_i=k\) 的球删掉。有 \(m\) 次查询,每次将 \(a_x\) 修改为 \(y\) ,问至少更改几个球可以使得删完所有球。

\(n,m\le 2\times 10^5\)

Solution

写发题解加深印象。

有一个结论,因为我懒,所以搬一下小粉兔的:

然后你就可以直接维护了。

Code

#include <bits/stdc++.h>
using namespace std; #define Int register int
#define MAXN 200005 template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}
template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}
template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');} int n,m,a[MAXN],C[MAXN],_S[MAXN << 1],*S = _S + MAXN; signed main(){
read (n,m);
for (Int i = 1;i <= n;++ i) read (a[i]),C[a[i]] ++;
for (Int i = 1;i <= n;++ i) S[i] ++,S[i - C[i]] --;int ans = 0;
for (Int i = n;i >= -n;-- i) S[i] += S[i + 1],ans += i > 0 && S[i] == 0;
while (m --> 0){
int x,y;read (x,y);
-- C[a[x]];
if (!-- S[a[x] - C[a[x]]] && a[x] - C[a[x]] > 0) ans ++;
if (!S[y - C[y]] ++ && y - C[y] > 0) ans --;
++ C[y],a[x] = y,write (ans),putchar ('\n');
}
return 0;
}

最新文章

  1. 利用Photos 框架搭建美图秀秀相册选择器
  2. Hello Mybatis 01 第一个CRUD
  3. 20145222黄亚奇《Java程序设计》第1周学习总结
  4. ASP.NET MVC的TempData(转载)
  5. Tomcat就是个容器,一种软件
  6. CAF(C++ actor framework)使用随笔(延迟发送,消息转发,消息优先级)(四)
  7. Oracle经典书籍推荐
  8. CF Round #354 Div.2
  9. border-radius归纳
  10. 1.Bootstrap-简介
  11. 152. Maximum Product Subarray(动态规划)
  12. Hadoop学习笔记02_MapReduce练习
  13. 从Spring-Session源码看Session机制的实现细节
  14. 实现属于自己的TensorFlow(一) - 计算图与前向传播
  15. Django 框架搭建入门案例
  16. selenium+Python(鼠标和键盘事件)
  17. 关于 modelNameLike 查询无数据
  18. 用C++实现void reverse(char* str)函数,即反转一个null结尾的字符串.
  19. 开发环境中快速部署Oracle Essbase(Rapid deployment of oracle essbase in development envrioments)
  20. JZOJ 4743. 积木

热门文章

  1. 利用AOP切面打印项目中每个接口的运行情况
  2. spring-data-redis 动态切换数据源
  3. excel快捷键如下:
  4. 一个double free相关问题的澄清
  5. idea导出jar包及坑
  6. iNeuOS工业互联平台,增加OPC UA驱动,同步和订阅方式读取数据
  7. list类型数据的操作指令
  8. python生成时间序列(date_range)
  9. 如何将 Ubuntu 版本升级到新版本
  10. Java学习笔记--面对对象OOP