【BZOJ】【P3028】【Usaco2013 Jan】【Cow Lineup】【题解】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3048

显然如果相同两点之间有多于k个元素那么他们不可能相连

Code:

#include
using namespace std;
int n,k,ans;
mapM;
dequeq;
int main(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		int x;scanf("%d",&x);
		M[x]++;q.push_back(x);
		while(M.size()>k+1){
			ans=max(ans,M[q.front()]);
			if(!--M[q.front()])
			M.erase(q.front());
			q.pop_front();
		}ans=max(ans,M[q.front()]);
	}
	while(!q.empty()){
		ans=max(ans,M[q.front()]);
		M[q.front()]--;
		q.pop_front();
	}cout<


你可能感兴趣的:(OI)