标签:
Description
1 5 3 2 5 1 3 4 4 2 5 1 2 3
Input
Output
Sample Input
14 5 1 5 3 2 5 1 3 4 4 2 5 1 2 3
Sample Output
3
Hint
【题意】给定一串长度为n,各位上的数小于等于m的正数序列。问最短的不属于该序列子串的串长度为多少。
【思路】找规律。
前8个数字已经使1,2,3,4,5都至少出现一次。
所以前8个数字可以归为一个集合。
然后再发现后6个数字也是1,2,3,4,5都至少出现了一次,也归为一个集合。
最后的答案数是集合数+1.
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int N=100005; const int M=10005; int a[N],vis[M]; int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(vis,0,sizeof(vis)); int sum=0,ans=0; for(int i=1;i<=n;i++) { if(vis[a[i]]==0&&a[i]<=m) { vis[a[i]]=1; sum+=vis[a[i]]; if(sum==m) { sum=0; memset(vis,0,sizeof(vis)); ans++; } } } printf("%d\n",ans+1); } return 0; }
标签:
原文地址:http://www.cnblogs.com/iwantstrong/p/5924938.html