CF2140F.Sum Minimisation

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 nn 的数组 aa,你可以对数组 aa 执行如下操作任意次(包括零次):

  1. 任意选择 kk 个不同的下标组成集合 S={i1,i2,…,ik}S = \{i_1, i_2, \ldots, i_k\},其中 1≤ij≤n1 \le i_j \le n,对于所有 1≤j≤k1 \le j \le k。
  2. 计算 x=ai1+ai2+⋯+aikx = a_{i_1} + a_{i_2} + \cdots + a_{i_k},然后设 y=x−⌊xk⌋⋅ky = x - \left\lfloor \frac{x}{k} \right\rfloor \cdot k。
  3. 在选中的元素 ai1,…,aika_{i_1}, \ldots, a_{i_k} 中,对其中 yy 个最小的值各减少 11。
    • 如果两个元素值不同(ai≠aja_i \ne a_j),值较小者为更小的元素。
    • 如果两个元素值相同(ai=aja_i = a_j),下标较小者为更小的元素。
    • 如果 y=0y=0,则不减少任何元素。

你的任务是,在任意次数操作之后,求数组 aa 所有元素之和能达到的最小可能值,或者判断是否能够无限减少。

输入格式

每个测试点包含多组测试数据。第一行给出测试用例数 tt(1≤t≤1041 \le t \le 10^4)。
接下来每组测试数据:
第一行包含一个整数 nn(1≤n≤1061 \le n \le 10^6),表示数组 aa 的长度。
第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(1≤ai≤1091 \le a_i \le 10^9),表示数组 aa 的元素。

保证所有测试数据中 nn 的总和不超过 10610^6。

输出格式

对于每个测试用例,输出一行,表示执行上述操作若干次后,数组 aa 的元素和可以达到的最小值。

如果数组元素和能被无限减少,输出 −1-1。

输入输出样例

  • 输入#1

    3
    2
    2 1
    4
    3 3 3 3
    8
    1 2 3 4 5 6 7 8

    输出#1

    2
    12
    -1

说明/提示

在第一个测试点中,我们只能对整个数组操作一次,最终可以得到 a=[2,0]a = [2,0],之后无法再进行操作使其和减少。

在第二个测试点中,无法通过任何操作减少和,因此答案为数组元素之和。

在第三个测试点中,存在一系列操作可以使数组总和无限减少。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页