@[红黑树](/user/413140)
@[owo_ImposterAnYu_owo](/user/510555)
@[int524288](/user/545645)
by ChickyHas @ 2022-07-24 11:07:39
没人在吗?
@[胖头鱼教练](/user/64302) 胖老师救救我
by ChickyHas @ 2022-07-24 12:05:51
@[黑白小弈星](/user/307211) 我不会![](//图.tk/0)
by ImposterAnYu @ 2022-07-24 21:42:34
az
by ChickyHas @ 2022-07-24 23:34:43
写成这样,有了80pts
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
string _s, s;
int n, len[N * 2];
long long ans;
void E() {
n = _s.size() * 2 + 1;
s = string(n, ' ');
for (int i = 0; i < n; ++i) {
s[i] = i & 1 ? _s[i / 2] : '#';
}
}
char T(char c) {
if (c == '1') {
return '0';
}
if (c == '0') {
return '1';
}
return c;
}
void C() {
for (int k = 0, i = 0, j = 0; k < n; k += 2) {
len[k] = (k < j ? min(j - k, len[2 * i - k]) : 1);
while (s[k + len[k]] == T(s[k - len[k]])) {
len[k]++;
}
if (len[k] + k > j) {
j = len[k] + k, i = k;
}
ans += len[k] >> 1;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> _s;
E(), C();
cout << ans;
return 0;
}
```
by ChickyHas @ 2022-07-25 07:51:42