P13139 [GCJ 2018 #1B] Rounding Error

题目描述

为了最终解决“哪种编程语言最好”这一由来已久的问题,你打算询问总共 $N$ 个人,让他们告诉你自己最喜欢的语言。这是一个开放式问题:每个人都可以自由选择任何一种语言,世界上的语言数量是无限的。 有些人已经作出了回应,你已经将这些信息整理成了一个计数列表。例如,1 2 表示你目前已经询问了 3 个人,其中一人选择了一种特定的语言,另外两人选择了另一种语言。 你打算将结果以表格的形式公布,列出每种语言以及选择它的人所占的百分比。你会将每个百分比四舍五入到最接近的整数,如果小数部分大于等于 0.5,则向上取整。例如,$12.5\%$ 会四舍五入为 $13\%$,$99.5\%$ 会四舍五入为 $100\%$,$12.4999\%$ 会四舍五入为 $12\%$。 在这种调查中,有时四舍五入后的百分比之和并不一定正好等于 100。请问,在你完成对剩余人员的调查后,四舍五入后的百分比之和最大可能是多少?

输入格式

输入的第一行是测试用例的数量 $T$。接下来有 $T$ 组测试数据,每组包含两行。第一行包含两个整数 $N$ 和 $L$,分别表示调查的总人数,以及已经有回应的不同语言的数量。第二行包含 $L$ 个整数 $C_i$,第 $i$ 个数表示有 $C_i$ 个人选择了第 $i$ 种已出现的语言。

输出格式

对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是四舍五入后的百分比之和的最大可能值。

说明/提示

**样例解释** 在样例 1 中,已有两人作答,且选择了不同的语言。还有一人未作答。如果这人选择第三种语言,则四舍五入后的百分比之和为 $33+33+33=99$。但如果这人选择了已出现的某种语言,则四舍五入后的百分比之和为 $67+33=100$。因此最大可能为 100。 在样例 2 中,无论剩下的四人如何选择,各语言的百分比总是 10 的整数倍,无需四舍五入,总和始终为 100。 在样例 3 中,一种最优情况是:剩下的两人各自选择一种未出现的语言,则四舍五入后的百分比之和为 $50+17+17+17=101$。 在样例 4 中,无论剩下的一人选择已出现的语言与否,四舍五入后的百分比之和都为 99。 **数据范围** - $1 \leqslant T \leqslant 100$。 - $1 \leqslant L < N$。 - 对所有 $i$,$1 \leqslant C_i$。 - 所有 $C_i$ 之和 $< N$。 **测试点 1(5 分,可见)** - $2 \leqslant N \leqslant 25$。 **测试点 2(9 分,可见)** - $2 \leqslant N \leqslant 250$。 **测试点 3(11 分,隐藏)** - $2 \leqslant N \leqslant 10^{5}$。 由 ChatGPT 4.1 翻译