对于给定的序列和k,如例子所示进行划分
{1,5,3,2,5,1,3,4}{4,2,5,1,2,3}{}
其中第一和第二个子序列可以完全覆盖[1,k],所以对于任何长度是1或者2序列都可以构成。但是由于第三个子序列不完整不能完全覆盖[1,k](长度是0也是不完整),故长度是3的序列不能构成
/*******************************************************************************
# Author : Neo Fung
# Email : neosfung@gmail.com
# Last modified: 2012-03-26 19:28
# Filename: POJ1189 HDU271 The Cow Lineup.cpp
# Description :
******************************************************************************/
#ifdef _MSC_VER
#define DEBUG
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <fstream>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <string>
#include <limits.h>
#include <algorithm>
#include <math.h>
#include <numeric>
#include <functional>
#include <ctype.h>
#define MAX 100010
using namespace std;
int main(void)
{
#ifdef DEBUG
freopen("../stdin.txt","r",stdin);
freopen("../stdout.txt","w",stdout);
#endif
int n,m,tmp;
bool num[MAX];
while(~scanf("%d%d",&n,&m) )
{
int ans=1,cnt=0;
memset(num,false,sizeof(num));
while(n--)
{
scanf("%d",&tmp);
if(!num[tmp])
{
num[tmp]=true;
++cnt;
if(cnt==m)
{
cnt=0;
memset(num,false,sizeof(num));
++ans;
}
}
}
printf("%d\n",ans);
}
return 0;
}