题意:
有n个0~m-1的整数组成一个序列。输入k,你的任务是尽量找到一个短一点的连续子序列使得该序列包含1-k的所有整数。
最大序列是生成的,生成在代码中
分析:
二分查找一个位置,长度a不成立 b成立 那么答案就在 (a, b] 之间,也就是这个时候不成立,左端点 + 1 右端点成立,右端点可以不变,也就有了代码里面的check后的变化。
代码:
#include<bits/stdc++.h>
#define LL long long
#define ms(s) memset(s, 0, sizeof(s))
using namespace std;
const int maxn = 1e6 + 10;
const int maxc = 1e3 + 10;
int a[maxn];
int N, M, K;
bool check(int t) {
int tot = 0;
int cnt[maxc];
ms(cnt)