1 条题解
-
0
自动搬运
来自洛谷,原作者为

览遍千秋
将伤与泪汇成力化作拳搬运于
2025-08-24 21:17:23,当前版本为作者最后更新于2025-02-16 19:05:30,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Source and Knowledge
2025 年 2 月语言月赛,由洛谷网校提供。
考察简单数组。
文字题解
根据题目的要求,我们可以改变连续 场比赛的得分。
枚举这 场比赛的起始场次 ,那么,终止的场次是 。下面的代码,外层循环 枚举起始场次, 枚举场次。
for (int i = 1; i + k - 1 <= n; i++) { for (int j = i; j <= i + k - 1; j++) { a[j] -= 2; } // something else here }对于 范围内的每一场比赛 ,我们修改其比分,将 减去 。由于另外一人的得分为 ,将 减去 的同时,自然的完成了另一人得分增加 的过程。
随后,我们枚举全部的比赛,统计粉边铅球可以赢的比赛数目。如果粉边铅球赢的比赛数目更多,则统计一次答案。
int win = 0; for (int j = 1; j <= n; j++) { if (99 - a[j] > a[j]) win++; } if (win > n - win) ans++;需要注意的是,在进行下一次比分修改时,需要撤销本次修改的比分。每一次比分修改是独立的。
综上,可以得到核心代码如下。
for (int i = 1; i + k - 1 <= n; i++) { for (int j = i; j <= i + k - 1; j++) { a[j] -= 2; } int win = 0; for (int j = 1; j <= n; j++) { if (99 - a[j] > a[j]) win++; } if (win > n - win) ans++; for (int j = i; j <= i + k - 1; j++) { a[j] += 2; } }
- 1
信息
- ID
- 11417
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者