c++求调(玄关)
  • 板块P1638 逛画展
  • 楼主EX_EXCRSE
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/1/17 10:17
  • 上次更新2025/1/17 14:16:03
查看原帖
c++求调(玄关)
877599
EX_EXCRSE楼主2025/1/17 10:17

我的做法是取一个点,然后一直向后循环直到找齐所有画 可是只有27分

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+200;
long long m,n,a[N],l,ans,sum,pd,mn=INT_MAX;
map<long long ,int>cnt;
long long qs,zs;
int main(){
	cin>>n>>m;
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		long long j=i;
		ans=0;
		while(ans<m&&j<=n-m+1){
			if(cnt[a[j]]==0){
				ans++;
				cnt[a[j]]=1;
			}
			sum++;
			//cout<<ans<<" ";
			if(ans==m){
				
				pd=1;
				break;
			}
			
			j++;
		}
		cnt.clear();
		if(pd==1){
			if(sum<mn){
				qs=i;zs=i+sum;
				mn=sum;
			}
			
			pd=0;
		}
		sum=0;
	}
	cout<<qs<<" "<<zs-1;
	return 0;
	}

2025/1/17 10:17
加载中...