社区讨论
95pts求调
P9183 [USACO23OPEN] FEB B参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjdlaek
- 此快照首次捕获于
- 2025/11/04 00:49 4 个月前
- 此快照最后确认于
- 2025/11/04 00:49 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
int k;
string s;
const int N = 2e5 + 10;
int ans[N];
signed main(){
cin >> k;
cin >> s;
s = " " + s;
int sum1 = 0;
int sum2 = 0;
for (int i = 2; i <= k; i++){
if (s[i] == 'E' && s[i - 1] == 'E') sum1++;
if (s[i] == 'B' && s[i - 1] == 'B') sum2++;
}
int minn = sum1 + sum2;
int maxn = sum1 + sum2;
int sum = 1;
for (int i = 1; i <= k; i++){
if (s[i] == 'F'){
if (s[i] == s[i + 1]){
sum++;
continue;
}
else{
int x = i - sum;
int y = i + 1;
if (x == 0 || y == k + 1){
maxn += sum;
continue;
}
if (s[x] == s[y]){
if (sum % 2 == 1) maxn += sum + 1;
else{
minn++;
maxn += sum + 1;
}
}
else{
if (sum % 2 == 1){
minn++;
maxn += sum;
}
else maxn += sum;
}
sum = 1;
}
}
}
if (s[1] == 'F' || s[k] == 'F'){
cout << maxn - minn + 1 << "\n";
for (int i = minn; i <= maxn; i++)
cout << i << "\n";
return 0;
}
cout << (maxn - minn) / 2 + 1 << "\n";
for (int i = minn; i <= maxn; i += 2)
cout << i << "\n";
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...