问:关于 CSP-ST2 RE*3,85(悬 2 关)
  • 板块学术版
  • 楼主ForeverWelkin
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/21 23:00
  • 上次更新2023/11/2 12:04:29
查看原帖
问:关于 CSP-ST2 RE*3,85(悬 2 关)
1027313
ForeverWelkin楼主2023/10/21 23:00
#include <bits/stdc++.h>
using namespace std;
int n;
typedef long long ll;
const int MAXN=2000005;
char s[MAXN];
ll f[MAXN],ans;
int found[MAXN][26];
inline char getch() {
	char ch=getchar();
	while(ch<'a'||ch>'z') ch=getchar();
	return ch;
}
inline void copyFound(int i,int j) {
	for(int k=0;k<26;k++) found[j][k]=found[i][k];
	found[j][s[i]-'a']=i;
	return ;
}
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		s[i]=getch();
		if(i==1) continue;
		if(s[i]==s[i-1]) {
			copyFound(i-2,i);
			f[i]=f[i-2]+1LL;
			ans+=f[i];
		}
		else if(found[i-1][s[i]-'a']>0) {
			copyFound(found[i-1][s[i]-'a']-1,i);
			f[i]=f[found[i-1][s[i]-'a']-1]+1LL;
			ans+=f[i];
		}
	}
	printf("%lld\n",ans);
	return 0;
}

有大佬帮忙看一下哪里 RE 了吗?

2023/10/21 23:00
加载中...