CF2037F.Ardent Flames
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你获得了新的限时活动角色 Xilonen。你决定让她参与战斗。
有 n 个敌人排成一行。第 i 个从左到右的敌人拥有生命值 hi,当前位于位置 xi。Xilonen 的攻击伤害为 m,你准备用她来击败这些敌人。
Xilonen 拥有强力的“地面践踏”攻击。在你进行任何攻击之前,你可以选择一个整数 p 并让 Xilonen 站在该位置(p 可以是任意整数位置,包括有敌人的位置)。之后,每次攻击时,她会对位于 p 的敌人造成 m 点伤害,对位于 p−1 和 p+1 的敌人造成 m−1 点伤害,对位于 p−2 和 p+2 的敌人造成 m−2 点伤害,依此类推。距离 Xilonen 至少 m 的敌人不会受到任何伤害。
形式化地说,若某个敌人位于位置 x,则她每次攻击会对该敌人造成 max(0,m−∣p−x∣) 点伤害。注意,你不能为不同的攻击选择不同的 p。
在所有可能的 p 中,输出 Xilonen 至少击败 k 个敌人所需的最少攻击次数。如果不存在某个 p 能使至少 k 个敌人最终被击败,则输出 −1。当敌人的生命值降至 0 或以下时,视为被击败。
输入格式
第一行包含一个整数 t(1≤t≤104)——表示测试用例的数量。
每个测试用例的第一行包含三个整数 n、m 和 k(1≤k≤n≤105,1≤m≤109)。
接下来一行包含 n 个整数 h1,h2,...,hn(1≤hi≤109)。
最后一行包含 n 个整数 x1,x2,...,xn(1≤xi≤109,且对所有 1≤i<n,有 xi<xi+1)。
保证所有测试用例中 n 的总和不超过 105。
输出格式
对于每个测试用例,输出一个整数,表示至少击败 k 个敌人所需的最少攻击次数。如果不存在某个 p 能使至少 k 个敌人最终被击败,则输出 −1。
输入输出样例
输入#1
6 5 5 3 7 7 7 7 7 1 2 3 4 5 9 5 9 2 4 6 8 10 8 6 4 2 1 2 3 4 5 6 7 8 9 2 10 2 1 1 1 20 2 10 1 69696969 420420420 1 20 2 10 2 10 15 1 19 2 2 2 1000000000 1 1 3
输出#1
2 2 -1 6969697 15 1000000000
说明/提示
在第一个测试用例中,最优选择 p=2。每次攻击,第一个敌人受到 5−∣2−1∣=4 点伤害,第二个敌人受到 5 点伤害,第三个敌人受到 4 点伤害,第四个敌人受到 3 点伤害,第五个敌人受到 2 点伤害。经过 2 次攻击,前三个敌人会被击败。可以证明,无论选择哪个 p,都无法在少于 2 次攻击内击败 3 个敌人。
在第二个测试用例中,必须击败全部 9 个敌人。选择 p=5,所有九个敌人都将在 2 次攻击内被击败。
在第三个测试用例中,必须击败两个敌人。然而可以证明,无论选择哪个 p,都无法同时对两个敌人造成伤害,因此答案为 −1。
在第四个测试用例中,选择 p=1 可以让我们在 6969697 次攻击内击败第一个敌人。
在第五个测试用例中,选择 p=10 可以让每个敌人每次受到 1 点伤害。两名敌人都将在 15 次攻击内被击败。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?