1 条题解
-
1
思路
当我们在某处空地发射弹球后,怪物受到攻击的顺序一定是左右或者右左交替,直到某一侧没有怪物时小球离开。
所以要恰好消灭所有怪物,空地左右的怪物生命值之和相差为 或 才可消灭怪物。
只要枚举空地位置,看当前发射弹球位置 能否消灭怪物即可,即 和 的差值绝对值 。
- 时,可以左右发射,贡献为 。
- 时,只可以向一个方向发射,贡献为 。
核心代码
for (int i = 1; i <= n; i++) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; } for (int i = 1; i <= n; i++) { if (a[i] == 0) { ll suml = pre[i - 1] - pre[0]; ll sumr = pre[n] - pre[i]; if (suml == sumr) { ans += 2; } if (abs(suml - sumr) == 1) { ans++; } } }
- 1
信息
- ID
- 21
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 124
- 已通过
- 27
- 上传者