2 条题解

  • 0

    ???

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int a[100010],f[100010];
    struct gg{
        int i;
        int s;
    };
    gg c[100010];
    bool cmp(gg a, gg b){
        return a.s>b.s;
    }
    int main(){
    	int n,m,k,s=0;
    	cin>>n>>m>>k;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
            c[a[i]].i=a[i];
            c[a[i]].s++;
    	}
        sort(c+1,c+m+1,cmp);
    	for(int l=1;l<=m;l++){
            int x=c[l].i;
            if(s>=c[l].s){
                break;
            }
    		int i=1,j=1,u=0,v=0;//v是已打卡次数,u是已跳过打卡次数
    		while(i<=n&&j<=n){//左指针移动的条件:i没有达到边界
    			if(u<=k){
    				if(a[j]==x){
    					v++;
    					s=max(s,v);
    				}else{
    					u++;
    				}
    				j++;
    			}else{
    				if(a[i]==x){
    					v--;
    				}else{
    					u--;
    				}
    				i++;
    			}
    		}
    	}
    	cout<<s;
    
    	return 0;
    }
    
    • 0
      @ 2024-6-1 13:02:20

    • 1

    信息

    ID
    3157
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    285
    已通过
    8
    上传者