ABC143F Distinct Numbers
2024-10-07 01:21:38
这道题非常好。其思想类似于 $O(n \log n)$ 求最长上升子序列的算法。
hint:考虑固定操作次数 $o$,$k$ 最大可取到多少?
int n;
scan(n);
vi a(n);
scan(a);
// appearance[i]: i 出现的次数
vi appearance(n + 1);
FOR (x, a) {
appearance[x]++;
}
// sum[i]:出现不超过i次的数,出现的总次数
vi sum(n + 1);
FOR (x, appearance) {
sum[x] += x;
}
rng (i, 2, n + 1) {
sum[i] += sum[i - 1];
}
vi cnt(n + 1);
FOR (x, appearance) {
cnt[x]++;
}
// cnt[i]:出现次数大于等于i的数字的个数
down (i, n - 1, 1) {
cnt[i] += cnt[i + 1];
}
// max_k[i]: 固定操作次数i,k最大可取到多少
vi max_k(n + 2);
max_k[0] = n;
max_k[n + 1] = 0;
// max_k[] 单调不增,max_k[i] >= max_k[i + 1]
rng (i, 1, n + 1) {
max_k[i] = cnt[i] + sum[i - 1] / i;
}
down (i, n, 0) {
rng (j, max_k[i + 1] + 1, max_k[i] + 1) {
println(i);
}
}
最新文章
- thinkphp-二次开发1
- C语言末
- C++学习笔记34:泛型编程拓展3
- JavaScript 基础第三天
- Hibernate正向工程(实体类-->;数据库)
- 巧妙使用checkbox制作纯css动态导航栏
- Windows10 安装配置IIS,并将程序发布到服务器上
- Super Jumping! Jumping! Jumping!(hdu 1087 LIS变形)
- JVM-Java程序性能监控-初级篇
- 一个简单小巧的CSV读取类
- Docker学习笔记 - Docker的简介
- 解决win环境下访问本机虚拟机中centos7 ftp服务器的问题
- cocos creator主程入门教程(二)—— 弹窗管理
- Docker自制CentOS镜像
- 51 Nod 1079 中国剩余定理(孙子定理)NOTE:互质情况
- C#属性、自动属性、字段之间的区别和理解
- Natural Language Generation/Abstractive Summarization
- JS从数组中随机取出几个数组元素的方法
- 20155226《网络攻防》 Exp5 MSF基础应用
- 005 RequestMapping_HiddenHttpMethodFilter 过滤器