【CodeForces】426Div2 B The Festive Evening

版权声明:博主很懒,转载注明出处就好=w= https://blog.csdn.net/Pure_W/article/details/76422274

链接:http://codeforces.com/contest/834/problem/B

Solution
暴力计算一下每个时刻有多少门开启就好
注意不要先关门再判断

#include<stdio.h>
#define N 1000005
int n,k,tot;
bool vis[26],st[N],ed[N];
char s[N];

int main()
{
	scanf("%d%d",&n,&k);
	scanf("%s",s+1);
	for (int i=1;i<=n;i++) if (!vis[s[i]-'A']) vis[s[i]-'A']=1,st[i]=1;
	for (int i=0;i<26;i++) vis[i]=0;
	for (int i=n;i;i--) if (!vis[s[i]-'A']) vis[s[i]-'A']=1,ed[i]=1;
	for (int i=1;i<=n;i++)
	{
		if (k<(tot+=st[i]))
		{
			puts("YES");
			return 0;
		}
		tot-=ed[i];
	}
	puts("NO");
}

猜你喜欢

转载自blog.csdn.net/Pure_W/article/details/76422274