酷代码 AI
菜单

小核桃面前有5名敌人,他们的护盾能量值各不相同。小核桃有两种攻击方法: “粒子炮”:它可以把所有敌人的护盾能量值减5。 “集束粒子炮”:它可以将能量汇集在一个点上,击中指定敌人和他旁边两人的护盾,使得指定敌人和其旁边两人的护盾值减少一半(整除2)。边界的敌人只会减少其相邻的一个敌人的护盾。 小核桃会发射n次攻击,1代表粒子炮,2代表集束粒子炮。 请问n次攻击后,这5名敌人的护盾能量值分别是多少?若敌人的护盾能量值为负数,则护盾能量值变为0。 输入: 第一行包含5个整数,表示5名敌人的护盾能量,所有敌人护盾能量值不高于20且各不相同。 第二行包含1个整数n(n < 5),表示小核桃共会发射n次攻击。 接下来有n行,每行第一个整数表示攻击类型:1代表粒子炮,2代表集束粒子炮。如果是粒子炮,则后面没有其他数字;如果是集束粒子炮,则后面有一个整数,表示攻击的是哪个敌人(编号从1到5)。 输出: 输出一行,包含5个整数,为n次攻击后,这5名敌人的护盾能量值。若敌人的护盾能量值为负数,则输出0。 输入样例: 10 20 7 15 19 3 1 1 2 2 输出样例: 0 5

```cpp #include <iostream> using namespace std; int main() { int shields[5]; for (int i = 0; i < 5; i++) { cin >> shields[i]; } int n; cin >> n; for (int i = 0; i < n; i++) { int type; cin >> type; if (type == 1) { for (int j = 0; j < 5; j++) { shields[j] = max(0, shields[j] - 5); } } else { int target; cin >> target; target--; shields[target] /= 2; if (target > 0) shields[target - 1] /= 2; if (target < 4) shields[target + 1] /= 2; } } for (int i = 0; i < 5; i++) { cout << shields[i]; if (i < 4) cout << " "; } return 0; } ``` [2026-01-31 19:25:23 | AI问答 | 267点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多