A
显然 \(n\) 个队的得分之和为 \(0\),因此答案为这 \(n-1\) 个数的和的相反数。
B
小贪心。
将所有人按 \(b\) 升序排序,\(b\) 相同时按 \(a\) 降序,对每个人按 \(b\) 进行分类讨论:
-
若 \(b< p\),那么我们一定要选这个人,因为选了这个人我们就可以用当前最小的代价去选其他的人。
-
若 \(b\ge p\),那么直接用 \(p\) 的代价选这个人就可以。
还要注意一些边界之类的东西,细节还是有的。
C
细节题。
我们可以看一下当 \(n=3,m=9\) 时的情况:
不难发现规律:
-
当 \(k>3\) 时,无解。
-
当 \(k=1\) 时,有且只有一组解,即全 \(0\) 序列。
-
当 \(k=2\) 时,有 \(\min(n,m)+\max(0,\lfloor\frac{m}{n}\rfloor -1)\) 组解。
-
当 \(k=3\) 时,有 \(\max(0,m-n-\lfloor\frac{m}{n}\rfloor+1)\) 组解。
D
简单题。
我们只需要计算对于每个值,它作为最大值出现在了几个方案中即可,产生的贡献就是方案数与其值的乘积。
我们将序列降序排序,按值从大到小考虑,设当前考虑的值为 \(x\),对应的下标为 \(y\)。
因为我们需要强制钦定 \(x\) 为最大值,这就意味着比 \(x\) 大的值都不能选,又因为只要选了一个位置,其倍数都会被选,所以这就意味着比 \(x\) 大的值的下标的约数一个都不能选。
那么我们统计 \(y\) 的约数中有几个可以选,设这个值为 \(a\),再设当前所有能选的数的个数为 \(b\),那么 \(x\) 对应的方案数就是 \((2^a-1)\times 2^{b-a}\),也就是 \(a\) 中至少选一个,剩下的 \(b-a\) 个随便选的方案数,这是因为 \(a\) 中至少要选一个才能选到 \(x\)。
时间复杂度为调和级数 \(O(n\log n)\)。
E
构造题。
将 \(i\) 向 \(a_i\) 连单向边,建成内向基环森林。
一种构造方案等价于将点黑白染色,黑白染色的过程比较复杂,具体看代码,主要就是:
-
如果存在奇环,无解。
-
如果存在偶环,那么黑白交替染色。
-
如果自己不存在子节点为白色,那么自己是白色。
-
如果自己存在子节点为白色,那么自己是黑色。
最后方案就是所有白点的出点编号,也就是白点下标对应的值。