补题连接:2023传智杯复赛第二场题目_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ
A题简单就跳过啦~
B题:
思路:枚举法就可以通过了,即每次修改字符si时要么与s(i-2)相同,要么与s(i+2)相同。枚举时维护对答案贡献的增减即可。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
int n = s.size();
int t = 0;
for (int i = 0; i < n - 2; i++)
{
if (s[i] == s[i + 2])
t++;
}
// abcba -> 3或者abcda ->2
for (int i = 2; i < n - 2; i++)
{
if (s[i - 2] == s[i + 2] && s[i] != s[i - 2])
{
t += 2;
cout << t;
return 0;
}
}
// abcd
for (int i = 2; i < n; i++)
{
if (s[i - 2] != s[i])//选择其中一个加一就行,例如abc
{
cout << t + 1;
return 0;
}
}
cout << t;
return 0;
}