比赛 |
4043级NOIP2022欢乐赛3rd |
评测结果 |
WWWWWWWTTT |
题目名称 |
回文串回文 |
最终得分 |
0 |
用户昵称 |
该账号已注销 |
运行时间 |
3.000 s |
代码语言 |
C++ |
内存使用 |
1.88 MiB |
提交时间 |
2022-11-04 20:20:19 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int cnt[27] = {0}, ans = 0;
char md;
string s;
int main() {
freopen("strts.in", "r", stdin);
freopen("strts.out", "w", stdout);
cin >> s;
int sl = s.length();
for (int i = 0; i < sl; i++) {
cnt[s[i] - 'a' + 1]++;
}
if (sl % 2 == 0) {
for (int i = 1; i <= 26; i++) {
if (cnt[i] % 2 == 1) {
md = i - 1 + 'a';
break;
}
}
for (int i = 0; i < sl; i++) {
if (s[i] == md) {
if (i == sl / 2 + 1)
break;
ans += abs(sl / 2 - i + 1);
if (i > sl / 2 + 1) {
for (int j = i; j > sl / 2 + 1; j--) {
swap(s[j], s[j - 1]);
}
}
}
}
}
for (int i = 0; i <= sl / 2; i++) {
for (int j = sl - 1 - i; j >= sl / 2; j--) {
bool x = 0;
if (s[j] == s[i]) {
x = 1;
for (int k = j; k < sl - 1 - i; k++) {
ans++;
swap(s[k], s[k + 1]);
}
}
if (x == 1)
break;
}
}
cout << ans << endl;
return 0;
}