POJ 3320

来源:互联网 发布:php json转数组为null 编辑:程序博客网 时间:2024/06/06 05:11
500ms#include <iostream>#include<cstdio>#include<map>               //知识点和出现次数的映射#include<set>#include<algorithm>using namespace std;const int maxn=1000000;int p;int a[maxn];map<int,int> maze;set<int>all;int res;int main(){    while(scanf("%d",&p)==1)    {        for(int i=0;i<p;i++)        {            scanf("%d",&a[i]);            all.insert(a[i]);        }        int n=all.size();                       //所有不同知识点的个数        int s=0,t=0,num=0;                          //s为前界,t为后界        res=p;                                  //储存最小的连续页数        //尺取法        for(;;)        {            while(t<p&&num<n)                   //未得到全部知识点            {                if(maze[a[t]]==0)                     //得到新的知识点                    num++;                maze[a[t]]++;                t++;            }            if(num<n) break;            res=min(res,t-s);            maze[a[s]]--;            if(maze[a[s]]==0) num--;            s++;        }        cout<<res<<endl;    }    return 0;}
原创粉丝点击