Codeforces Global Round 11 个人题解(B题)
Codeforces Global Round 11
1427A. Avoiding Zero
题目链接:click here
待补
1427B. Chess Cheater
题目链接:click here
Example
input
8
5 2
WLWLL
6 5
LLLWWL
7 1
LWLWLWL
15 5
WWWLLLWWWLLLWWW
40 7
LLWLWLWWWLWLLWLWWWLWLLWLLWLLLLWLLWWWLWWL
1 0
L
1 1
L
6 1
WLLWLW
output
7
11
6
26
46
0
1
6
Note
第一个测试用例的说明。 在改变任何结果之前,得分为
作弊的最佳方法是更改第二局和第四局的结果。 这样做,您最终赢得了前四场比赛(结果的字符串变为WWWWL)。 因此,新分数是
第二个测试用例的说明。 在更改任何结果之前,得分为
作弊的最佳方法是更改第一局,第二局,第三局和第六局的结果。 这样做,您最终赢得了所有比赛(结果的字符串变成WWWWWW)。 因此,新分数是
思路:
请注意,分数等于
连胜是连续获胜的最大顺序。
在下面的说明中,变量
如果
否则,很明显,我们要转换k获胜中的k损失。因此,作弊后,获胜次数将为
我们如何才能减少连胜的次数?非常直观的是,我们将从长度最短的差距开始,以“填补”连续的获胜间隔之间的差距。可以证明,如果没有填补 g 个缺口(即在作弊之后,g个缺口仍然至少包含一个损失),则至少有g + 1个获胜间隔。
实现过程如下。通过线性扫描,我们可以找到间隙的长度,然后对它们进行排序。最后,我们计算可以选择的总和
解决方案的复杂度为
AC代码
#include<bits/stdc++.h>
#define ms(a,b) memset(a,b);
using namespace std;
typedef long long ll;
int main() {
//freopen("in.txt", "r", stdin);
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int T;
cin >> T;
for (int t = 1; t <= T; t++) {
int N, K;
cin >> N >> K;
string S;
cin >> S;
int winning_streaks_cnt = 0;
int wins = 0;
int losses = 0;
vector<int> losing_streaks;
for (int i = 0; i < N; i++) {
if (S[i] == 'W') {
wins++;
if (i == 0 or S[i - 1] == 'L') winning_streaks_cnt++;
}
if (S[i] == 'L') {
losses++;
if (i == 0 or S[i - 1] == 'W') losing_streaks.push_back(0);
losing_streaks.back()++;
}
}
if (K >= losses) {
cout << 2 * N - 1 << "\n";
continue;
}
if (wins == 0) {
if (K == 0) cout << 0 << "\n";
else cout << 2 * K - 1 << "\n";
continue;
}
if (S[0] == 'L') losing_streaks[0] = 1e8;
if (S[N - 1] == 'L') losing_streaks.back() = 1e8;
sort(losing_streaks.begin(), losing_streaks.end());
wins += K;
for (int ls : losing_streaks) {
if (ls > K) break;
K -= ls;
winning_streaks_cnt--;
}
cout << 2 * wins - winning_streaks_cnt << "\n";
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战