《 找 不 同 》
  • 板块P1638 逛画展
  • 楼主osfly
  • 当前回复20
  • 已保存回复20
  • 发布时间2021/7/7 19:01
  • 上次更新2023/11/4 18:28:06
查看原帖
《 找 不 同 》
339299
osfly楼主2021/7/7 19:01

mymy codecode

#include<cstdio>
int n,m;
int s[1000100];
int num[2010];
int sum;
int ans=0x7f7f7f7f,ansa=1,ansb=n;
int r=0,l=1;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",s+i);
	while(l<=n)
	{
		while(sum<m&&r<n)
		{
			r++;
			if(num[s[r]]==0) sum++;
			num[s[r]]++;
		}
		num[s[l]]--;
		if(num[s[l]]==0) sum--;
		l++;
		if(sum==m&&r-l+1<ans)
		{
			ans=r-l+1;
			ansa=l;
			ansb=r;
		}
	}
	printf("%d %d",ansa,ansb);
	return 0;
}

80pts

AC$$code

#include<cstdio>
int check[2001], paint[1000001];
int main()
{
	int n, m, cnt = 0, minn = 1000001, j = 0, i = 1;
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++)
		scanf("%d", paint + i);
	int a = 1, b = n;
	while(i <= n)
	{
		while(cnt < m && j < n) {
			j++;
			if(check[paint[j]] == 0) cnt++;
			check[paint[j]]++;
		}
		check[paint[i]]--;
		if(check[paint[i]] == 0) cnt--;
		i++;
		if(j - i + 1 < minn && cnt == m) a = i, b= j, minn = j - i + 1;
	}
	printf("%d %d", a, b);
	return 0;
}

(貌似只有变量名字的不同吧)

2021/7/7 19:01
加载中...