[ABC143F] Distinct Numbers
Posted top_secret的小尛博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ABC143F] Distinct Numbers相关的知识,希望对你有一定的参考价值。
解答
官方题解:
\\[\\begin{aligned}
f(X)
&= \\left\\lfloor\\frac{\\sum_{j=1}^N \\min\\{C_j, X\\}}{X}\\right\\rfloor
&= \\left\\lfloor\\frac{\\sum_{k=0}^N \\min\\{k, X\\}\\times D_k}{X}\\right\\rfloor
&= \\left\\lfloor\\frac{\\sum_{k=0}^X kD_k + X\\sum_{k=X+1}^N D_k}{X}\\right\\rfloor
\\end{aligned}
\\]
之后找满足\\(K\\le f(X)\\)的最大\\(X\\)即可。
我的思路:
如果\\(K\\)为定值,可以\\(O(\\log N)\\)求出答案:
- 二分答案,只需检查答案\\(X\\)是否“合法”。
- 获得每个数出现次数
cnt
其中每个数的出现次数ccnt
。 - 有贪心易知,每次只要取出现次数前\\(K\\)多的数即可。又易知每个数最多被使用\\(X\\)次。
- 若共有\\(Y\\)个数\\(出现次数\\ge K\\),设其余的数之和为\\(Z\\),只需检查\\(数的个数\\ge K\\)与\\(Z+K\\times Y \\ge X\\times K\\)。
实现
如果直接实现的话,是\\(O(n\\log n)\\)的,那么可不可以优化到\\(O(n)\\)呢?
以上是关于[ABC143F] Distinct Numbers的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 694. Number of Distinct Islands
694. Number of Distinct Islands - Medium