PKU POJ 1989 The Cow Lineup 贪心策略

将输入序列划分为若干段,每段包含1~k至少各一个。有几个这样的段(如x)就能形成x长度的任意序列。所以最短不存在的序列长度为x+1。

#include<iostream>
using namespace std;
bool flag[10000];
int main()
{
    int n,k,tmp,cnt,len;
    while (scanf("%d%d",&n,&k)!=EOF)
    {
        memset(flag,true,k+1);
        cnt=0;
        len=0;
        while (n--)
        {
            scanf("%d",&tmp);
            if (flag[tmp])
            {
                ++cnt;
                flag[tmp]=false;
            }
            if (cnt==k)
            {
                ++len;
                cnt=0;
                memset(flag,true,k+1);
            }
        }
        printf("%d\n",len+1);
    }
    return 0;
}

 

posted on 2013-03-04 20:22  Deller  阅读(138)  评论(0)    收藏  举报

导航