CFCF2192C.All-in-one Gun

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

你正在开发一款新的射击游戏,但鉴于市面已有大量射击游戏,你决定让游戏具有独特之处。

你拥有一把多合一武器,它会以固定顺序射出子弹。弹夹中有 nn 发子弹,第 ii 发的伤害为 aia_i。敌人初始拥有 hh 点生命值,当其生命值降至 00 或更低时死亡。

武器每秒射出一发子弹,打完所有 nn 发后必须重新装填,装填需要 kk 秒。装填后弹夹重新变为同样的顺序 [a1,a2,,an][a_1, a_2, \ldots, a_n]。你不能提前装填,必须先打空弹夹。一开始弹夹已经填满。

战斗开始前,你最多只允许进行一次交换操作:任选下标 1i<jn1 \le i < j \le n,将 aia_iaja_j 进行交换。

你的任务是,考虑可选的这一轮交换后,求击杀敌人所需的最少秒数。

输入格式

每组测试数据包含多个测试用例。第一行包含整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每组测试数据的第一行包含三个整数 nnhhkk2n21052 \le n \le 2\cdot 10^51h,k1091 \le h, k \le 10^9)——弹夹容量、敌人生命值以及重新装填所需时间。

每组测试数据的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \le a_i \le 10^9)。

保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

输出格式

对于每组测试数据,输出一个整数,表示击杀敌人所需的最小时间(单位为秒)。

输入输出样例

  • 输入#1

    6
    5 10 1
    4 2 3 5 3
    5 10 1
    4 2 3 7 3
    3 10 2
    1 2 3
    2 5 3
    2 1
    3 18 5
    1 2 3
    4 10 10
    1 1 2 2

    输出#1

    3
    2
    7
    6
    19
    17

说明/提示

在第一个测试用例中,你可以交换下标为 2255 的子弹。交换后数组 aa 变为 4,3,3,5,24, 3, 3, 5, 2

经过 33 秒,敌人的生命值为 10433=010 - 4 - 3 - 3 = 0,因此 33 秒内击杀敌人。可以证明无法用更短时间击杀敌人。

在第三个测试用例中,你可以交换下标 1133 的子弹。交换后数组 aa 变为 3,2,13, 2, 1

77 秒时,你射光第一轮弹夹(33 秒)+ 装填新弹夹(22 秒)+ 用新弹夹射出前两发(22 秒),共用时 77 秒。

此时敌人生命值为 1032132=110 - 3 - 2 - 1 - 3 - 2 = -1,因此 77 秒内击杀敌人。可以证明无法用更短时间完成。

由 ChatGPT 5 翻译

首页