UVa 11536 最短子序列(Smallest Sub-Array)

这是一道关于寻找序列中最短子序列的问题,输入k,目标是在给定的0到m-1整数序列中找到一个连续子序列,确保它包含了从1到k的所有整数。通过二分查找的方法,确定子序列的起始位置,以达到最短长度。
摘要由CSDN通过智能技术生成

题意:
有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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值