• POJ 3320 Jessica's Reading Problem


    sort扫一下

    注意(++i)的位置
    cin cout 过不去

    #include <cstdio>
    #include <algorithm>
    #include <cassert>
    
    using namespace std;
    
    const int MAXN=1000111;
    const int MAXM=MAXN;
    
    int N;
    int M;
    int Vc[MAXM];
    int Cnt=0;
    int ANS;
    
    struct Page {
    	long long v;
    	int id, k;
    } P[MAXN];
    
    bool cmpv(Page A, Page B) {
    	if(A.v==B.v)	return A.id<B.id;
    	return A.v<B.v;
    }
    
    bool cmpid(Page A, Page B) {
    	return A.id<B.id;
    }
    
    int main() {
    
    	while(scanf("%d", &N)!=EOF) {
    		for(int i=1; i<=N; ++i) {
    			scanf("%lld", &P[i].v);
    			P[i].id=i;
    		}
    		sort(P+1, P+N+1, cmpv);
    		P[1].k=1;
    		for(int i=2; i<=N; ++i) {
    			P[i].k=P[i-1].k;
    			if(P[i].v!=P[i-1].v)	++P[i].k;
    		}
    		M=P[N].k;
    		sort(P+1, P+N+1, cmpid);
    		ANS=N;
    		for(int i=1, j=0; i<=N; ++i) {
    			while(Cnt<M && j<N) {
    				++j;
    				++Vc[P[j].k];
    				if(Vc[P[j].k]==1)	++Cnt;
    			}
    			if(Cnt==M) {
    				ANS=min(ANS, j-i+1);
    			}
    			//++i;
    			--Vc[P[i].k];
    			if(Vc[P[i].k]==0)	--Cnt;
    		}
    		assert(Cnt==0);
    		printf("%d
    ", ANS);
    	}
    
    	return 0;
    }
    
    
  • 相关阅读:
    第五次实验作业
    第四次作业
    java三
    java作业二
    java作业一
    作业11
    作业10
    作业9
    作业8
    作业7
  • 原文地址:https://www.cnblogs.com/Pickupwin/p/9029461.html
Copyright © 2020-2023  润新知