#lg15580. [USACO26FEB] Blast Damage P
[USACO26FEB] Blast Damage P
[AdditionalFile5632.zip](file://AdditionalFile5632.zip?type=additional_file)
#5632. 「USACO 2026 Third Platinum」Blast Damage
标签: 传统 | 时间限制: 2000 ms | 内存限制: 256 MiB |
题目描述
题目译自 USACO 2026 Third Contest, Platinum Problem 2. Blast Damage
Bessie 正在玩一款电子游戏。在游戏中,她需要击败一排 个敌人,他们的初始血量分别为 。在一次攻击中,她可以执行以下步骤:
- 选择一个仍然存活的敌人 (即 )。
- 对第 个敌人以及与其相邻且仍然存活的敌人各造成 点伤害。具体来说,对于每个 ,如果 ,则将 减 。
请帮助 Bessie 确定击败所有敌人(即让所有 降为 )所需的最少攻击次数。
此外,你还会得到一个参数 。如果 ,请输出一个以较少连续打击次数实现最少攻击总数的构造方案。一次连续打击是指连续攻击同一个敌人。
设你的构造方案中连续打击的次数为 。你的构造方案应符合以下格式:首先在单独的一行输出 ,随后输出 行,每行包含两个整数 和 ,表示 Bessie 连续攻击第 个敌人 次。
根据 的值, 必须满足以下约束之一:
- :(可以证明总能找到满足此条件的构造方案)。
- :,其中 是在所有长度为 的序列中,达到最少攻击总数所需的最小连续打击次数的最大值。
输入格式
每个输入包含 个独立的测试用例。第一行包含 和 。
每个测试用例的格式如下:
- 第一行包含 。
- 第二行包含 。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,第一行输出最少攻击次数。
如果 ,则按照上述要求额外输出 行。你可以输出任何一个满足条件的构造方案。
样例 1
输入
2 0
1
10
3
6 1 7
输出
10
12
对于第二个测试用例,你可以先对中间的敌人进行一次攻击。然后在此之后的任何顺序中,对第一个敌人进行五次攻击,并对最后一个敌人进行六次攻击。
样例 2
输入
2 1
1
10
3
6 1 7
输出
10
2
1 0
1 10
12
4
2 1
1 5
3 2
3 4
此输出是正确的,因为对于测试用例 ,;对于测试用例 ,。
样例 3
输入
2 2
1
10
3
6 1 7
输出
10
1
1 10
12
3
2 1
3 6
1 5
此输出是正确的,因为对于测试用例 ,;对于测试用例 ,。
数据范围与提示
- 测试点 4-7:
- 测试点 8-11:
- 测试点 12-13:
供题:Benjamin Qi