题目大意
给一个数列,找出存在不能组合的最短位数
例子:
它到一位数,两位数的所有情况都能组成,三位数:没有 2 2 4 这种情况1 5 3 2 5 1 3 4 4 2 5 1 2 3
题目分析(思维题):
- 根据例子:[1-k]组成所有一位数,[1-k][1-k]组成所有两位数,最多满足两位,那么答案就是3
- 那么记录1到k所有数出现的次数,若全部出现,就满足一个位数
- 最终输出满足最大位数+1
代码如下
#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e4 + 10;
int n,k;
int cnt;
bool st[N];
int idx_st;
inline void quickread(){
ios::sync_with_stdio(0);cin.tie(0);
}
int main(){
quickread();
cin >> n >> k;
for(int i = 0; i < n; i ++ ){
int x; cin >> x;
if(!st[x]) st[x] = true,idx_st++;
if(idx_st == k) cnt++,memset(st,0,sizeof st),idx_st = 0;
}
cout<<cnt+1;
return 0;
}


京公网安备 11010502036488号