/ Randle /

记录详情

Accepted


  
# 状态 耗时 内存占用
#1 Accepted 2ms 320.0 KiB
#2 Accepted 3ms 304.0 KiB
#3 Accepted 2ms 316.0 KiB
#4 Accepted 2ms 320.0 KiB
#5 Accepted 1ms 308.0 KiB
#6 Accepted 1ms 308.0 KiB
#7 Accepted 163ms 1.316 MiB
#8 Accepted 148ms 1.305 MiB
#9 Accepted 163ms 1.305 MiB
#10 Accepted 200ms 1.309 MiB

代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<vector>
using namespace std;
const int maxn=1000010;
int n,ans,p[26][26],minv[26][26],sum[26],last[26];
char s[maxn];
int main()
{
	scanf("%d",&n);
	scanf("%s",s+1);
	for (int a=1;a<=n;a++)
	{
		int c=s[a]-'a';
		sum[c]++;
		last[c]=a;
		for (int b=0;b<26;b++)
			if (b!=a && sum[b]) ans=max(ans,max(sum[c]-sum[b]-minv[c][b]-(last[b]==p[c][b]),sum[b]-sum[c]-minv[b][c]-(last[b]==p[b][c])));
		for (int b=0;b<26;b++)
		{
			if (sum[c]-sum[b]<minv[c][b]) minv[c][b]=sum[c]-sum[b],p[c][b]=a;
			if (sum[b]-sum[c]<minv[b][c]) minv[b][c]=sum[b]-sum[c],p[b][c]=a;
		}
	}
	printf("%d\n",ans);

	return 0;
}

信息

递交者
类型
递交
题目
字符串权值 T1
题目数据
下载
语言
C++
递交时间
2017-10-01 13:57:43
评测时间
2017-10-01 13:57:43
评测机
分数
100
总耗时
691ms
峰值内存
1.316 MiB