社区讨论
警示后人100->85
P9753[CSP-S 2023] 消消乐参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @loczmy7e
- 此快照首次捕获于
- 2023/10/30 22:21 2 年前
- 此快照最后确认于
- 2023/11/02 10:36 2 年前
考场版:
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 2e6;
int n, f[N][26], cnt[N];
string s;
int main() {
ios::sync_with_stdio(false);
freopen("game.in", "r", stdin);
freopen("game.out", "w", stdout);
cin >> n >> s;
memset(f, 0xff, sizeof(f));
f[n-1][s[n-1]-'a'] = n-1;
for(int i = n-2; i >= 0; --i) {
int ni = f[i+1][s[i]-'a'];
if(ni == -1) {
f[i][s[i]-'a'] = i;
continue;
}
cnt[i] = cnt[ni+1]+1;
memcpy(f[i], f[ni+1], sizeof(f[i]));
f[i][s[i]-'a'] = i;
}
long long ans = 0;
for(int i = 0; i < n; ++i) ans += cnt[i];
cout << ans << endl;
return 0;
}
int n, f[N][26], cnt[N];
int n, f[N+1][26], cnt[N+1];代码中
ni 表示使 [i, ni] 串合法且最小的数,本代码的问题在于 ni 可能为 n-1,直接溢出。回复
共 7 条回复,欢迎继续交流。
正在加载回复...