Solution
尺取法板子,算是复习一波.
题中说最多删除 \(k\) 种,那么其实就是找一个颜色种类最多为 \(k+1\) 的区间; 统计一下其中最多的颜色出现次数. 然后直接尺取法,然后每次对于 \(col[r]\) 进行统计,时间复杂度 \(O(n)\) .Code
#includeusing namespace std;const int maxn=100008;int ans;int n,k,col[maxn];map js;int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&col[i]); int now=0,l=1,r=0; while(r<=n) { r++; if(!js[col[r]])now++; js[col[r]]++; while(now==k+2) { js[col[l]]--; if(!js[col[l]])now--; l++; } ans=max(ans,js[col[r]]); } cout< <