1 条题解
-
0
题意回顾
你有 种数字的卡牌,第 种有 张。
你可以购买最多 张新卡牌(数字任意)。
之后,将所有卡牌分成若干副套牌,要求:- 所有套牌大小相同(记为 );
- 每副套牌内,数字互不相同。
求最大可能的 。
关键观察
- 因为只有 种数字,所以每副套牌最多包含 张牌(每种数字最多一张),因此 答案 。
第一步: 的情况(不购买)
设:
- 总卡牌数 ;
- 最大频率 。
要能分成大小为 的套牌,必须满足:
- (总牌数能被 整除,才能正好分完);
- (每种数字最多出现在每副牌一次,所以最多只能有 副牌,即每种数字最多 张)。
证明(充分性):
如果上述两条件成立,设 为套牌数量。
每次从剩余牌中选 种不同的牌(优先选剩余数量最多的 种)组成一副牌,可以证明这个过程能一直进行下去(类似 1954D - Colored Balls 或 abc227_d - Project Planning 的贪心构造)。因此, 时,能分出的最大 是满足以上两个条件的最大 。
第二步:一般 的情况
我们想判断能否让套牌大小达到某个 。
设最终套牌数为 。
由于每种数字在每副牌中最多出现一次,所以最终每种数字的牌数不能超过 。
因此,对于第 种数字:
- 如果 ,我们必须通过购买来增加别的数字,但无法减少 ,所以 必须 ?
不对,我们无法降低 ,但可以通过买其他牌来让 变大?
其实 是最终总牌数除以 ,而 是我们试的值, 会变化。
更直接的方法:
关键推导
最终套牌数 满足:
- 每副牌大小 ,共 副牌,总牌数 。
- 每种数字最多出现 次,所以原来就多的数字()已经超过了允许值,除非我们买其他牌来增加 ?
不, 是全局的, 是固定的(未买之前),买卡只能增加总牌数,但每种数字的最终张数 = ,这必须 。
因此,对每种 ,需要购买的数量至少为 。
总购买量:必须满足 。
同时,总牌数 = ,并且等于 。
所以:
其中 。
换一个角度(更常用)
我们想判断 是否可行。
设 ?
不对,更常见的方法:最终套牌数 必须 ,因为每种数字最多 张。
同时,总牌数 = 。我们可以自由买卡,所以最终总牌数可以是 到 之间的任意值(只要不超 张)。
因此,对给定的 ,我们想找 满足:
- ;
- ;
- (因为最多买 张);
- 并且购买量 = (这其实就是条件 3)。
还要检查每种数字的最终张数 :
对每个 ,最终张数 = ,我们可以控制买多少张 ,只要总购买量 。
最紧张的情况是 很大,比如 ,那不可能,因为即使不买这种,它已经超过 了。
所以必须有:即 ,这正是条件 1。
因此, 可行的条件是:存在整数 使得:
- ;
- ;
- 。
化简
从 和 得:
$$d \ge \max\left(\max(a_i), \lceil \frac{m}{s} \rceil \right) $$令 $d_{\min} = \max\left(\max(a_i), \lceil \frac{m}{s} \rceil \right)$。
那么需要存在 且 。
最小的 在 时取得,为 。
如果 ,那么我们可以取 并购买 张牌(这个数 且 )。
如果 ,那么即使取最小可能的 也超过允许的总牌数,不可行。因此, 可行的充要条件是:
$$s \cdot \max\left(\max(a_i), \lceil \frac{m}{s} \rceil \right) \le m + k $$
第三步:求解最大
由于 且 的总和 ,我们可以对每个测试用例从 向下枚举第一个可行的 ,或者直接枚举 并检查。
复杂度 每个测试用例(因为枚举 并计算条件一次 )。
最终算法
对每个测试用例:
- 计算 ,。
- 对 从 往下到 :
- 计算 。
- 如果 ,输出 并结束。
由于 总和小,直接循环可行。
示例验证
以第一个样例:
。- :,,不可行。
- :,,可行,输出 。
匹配答案。
这样,我们就得到了一个清晰、可实现的 解法。
- 1
信息
- ID
- 6258
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者