ABC143F Distinct Numbers
这道题非常好。其思想类似于 $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);
}
}
ABC143F Distinct Numbers的更多相关文章
- AtCoder Beginner Contest 143 F - Distinct Numbers
题意 给出一个长度为NNN的序列,求对于所有k∈[1,N]k\in[1,N]k∈[1,N],每次从序列中选出kkk个互不相同的数,最多能取多少次. N≤3e5N\le3e5N≤3e5 题解 我们首先把 ...
- F - Distinct Numbers
链接:https://atcoder.jp/contests/abc143/tasks/abc143_f 题解:开两个数组,其中一个arr用来保存每个元素出现的次数,同时再开一个数组crr用来保存出现 ...
- 30. Distinct Subsequences
Distinct Subsequences OJ: https://oj.leetcode.com/problems/distinct-subsequences/ Given a string S a ...
- [LeetCode] Missing Number 丢失的数字
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...
- [LeetCode] Remove Duplicates from Sorted List II 移除有序链表中的重复项之二
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
- Codeforces Round #384 (Div. 2) C. Vladik and fractions(构造题)
传送门 Description Vladik and Chloe decided to determine who of them is better at math. Vladik claimed ...
- BUG-FREE-For Dream
一直直到bug-free.不能错任何一点. 思路不清晰:刷两天. 做错了,刷一天. 直到bug-free.高亮,标红. 185,OA(YAMAXUN)--- (1) findFirstDuplicat ...
- [leetcode]题型整理之用bit统计个数
137. Single Number II Given an array of integers, every element appears three times except for one. ...
- CF2.C
C. Vladik and fractions time limit per test 1 second memory limit per test 256 megabytes input stand ...
随机推荐
- 2018蓝桥杯C/C++组第4题第几个幸运数
题目4标题:第几个幸运数 到x星球旅行的游客都被发给一个整数,作为游客编号.x星的国王有个怪癖,他只喜欢数字3,5和7.国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品. 我们来看前 ...
- vue子组件改变父组件的值
1 在父组件的coment绑定事件 <template> <div :class="classObj" class="app-wrapper" ...
- MySQL_8.0与5.7区别之账户与安全
一.创建用户和用户授权 MySQL5.7创建用户和用户授权命令可以同时执行 grant all privileges on *.* to 'Gary'@'%' identified by 'Gary@ ...
- html基础(选择器,font属性 )
css选择器 css与html的关系 css以html为基础 css主要设置的就是html标签中的属性样式,css进行网页布局. css语法 选择器{属性:值,属性:值} css选择 ...
- Mac平台最好用的万能开源免费播放器-IINA
1.安装 1)官网下载地址 https://iina.io/ 2)brew 方式安装 testdeMacBook-Pro:~ test$ brew cask install iina Updating ...
- 在jenkins打开roboframework报告:Opening Robot Framework report failed
来源自: https://blog.51cto.com/icestick8586/1884615 --------------------------------------------------- ...
- JDBC——JDBC基础
1.JDBC与数据库的交互过程概括性来说,JDBC与数据库交互有以下这些步骤:1.建立一个到数据库的连接.2.在数据库中对表执行检索.创建,或修改的SQL查询.3.关闭到数据库的连接.JDBC的类和接 ...
- anroid学习笔记(1)
大概是2个月前,报名了慕课的android就业班课程. 算是补全了当初博客分类的最初设计. 安卓和前端比较: 1,java在安卓开发中的作用,现在我的认识是和JavaScript在前端web开发中有很 ...
- ubuntu下如何检查nvidia显卡驱动是否安装OK?
答:使用sudo lshw -c video即可,笔者的输出如下: jello~$ sudo lshw -c video*-display description: VGA compatible co ...
- C++函数传值问题
在做题出现个神奇的事情,C++的传值跟其他OOP语言不一样.首先做个测试,看看下面输出结果是什么? void F(int a,int b,int c){ cout<<a<<b& ...