题意:
有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);for(int i = 1; i <= N; i++) {if(tot == K) return true;if(a[i] <= K && cnt[a[i]]++ == 0) tot++;if(i > t && a[i - t] <= K && --cnt[a[i - t]] == 0) tot--;}if(tot == K) return true;return false;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);ios::sync_with_stdio(false);cin.tie(0);int T;cin >> T;int kase = 0;while(T--) {cin >> N >> M >> K;a[1] = 1; a[2] = 2; a[3] = 3;for(int i = 4; i <= N; i++) {a[i] = (a[i - 3] + a[i - 2] + a[i - 1]) % M + 1;}int L = 1, R = N + 1;while(L < R) {int Mid = L + (R - L) / 2;if(check(Mid)) {R = Mid;} else {L = Mid + 1;}}//cout << L << endl;if(check(L)) cout << "Case " << ++kase << ": " << L << endl;else cout << "Case " << ++kase << ": " <<"sequence nai" << endl;}return 0;
}

UVa 11536 最短子序列(Smallest Sub-Array)相关推荐

  1. [JAVA]寻找满足和的最短子序列(Minimum Size Subarray Sum)

    题目来源:leetcode 题目描述: Given an array of n positive integers and a positive integer s, find the minimal ...

  2. uva 11536——Smallest Sub-Array

    题意:给定n个数,这n个数在m的范围之内.v[i]=(v[i-1]+v[i-2]+v[i-3])%m+1;   然后求一个最短连续子序列使得序列内包括1-k个数. 思路:枚举.枚举以v[i]结尾的最短 ...

  3. LA2678最短子序列

    题意:       给你一个正整数序列,问你在里面找到一个最短的子序列,要求子序列的和大于等于k,输出序列长度. 思路:       这个序列的每个数字都是正整数,那么就比较好想了,我们可以直接枚举终 ...

  4. 字符串ababaaab的nextval数组值序列为_子序列解题模板:最长回文子序列

    预计阅读时间:6 分钟 子序列问题是常见的算法问题,而且并不好解决. 首先,子序列问题本身就相对子串.子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解相关的算法 ...

  5. java最长回文子序列_算法--字符串:最长回文子序列

    转自:labuladong公众号 子序列问题是常见的算法问题,而且并不好解决. 首先,子序列问题本身就相对子串.子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解 ...

  6. 【BZOJ】4032: [HEOI2015]最短不公共子串(LibreOJ #2123)

    [题意]给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短 ...

  7. nyoj 133 子序列(尺取法+离散化)

    子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次. 如2 8 8 ...

  8. 程序员面试100题之十二:求数组中最长递增子序列

    写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度. 例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列为1,2,4,6. 分析与解法 根据题目要求, ...

  9. 求数组中最长递增子序列的长度

    题目:写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度. 例:在序列[1, -1, 2, -3, 4, -5, 6, -7]中,其最长递增子序列的长度为4([1, 2, ...

最新文章

  1. Fiddle抓包Https
  2. Ubuntu下搜狗输入法乱码(二)
  3. 2.6 更多导数例子-深度学习-Stanford吴恩达教授
  4. 密码学-hash加密
  5. Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类
  6. ASP.NET数据库访问系列教程01-概述篇 创建数据访问层(下)
  7. 京东购物在微信等场景下的算法应用实践
  8. android.view.WindowManager$BadTokenException
  9. 打印倍数_英语精读:3d打印的速度有望提高到100倍
  10. Web前端工作笔记012---IE8兼容_WebSocket
  11. Java EE 6 最终草案暗示了平台的未来发展方向
  12. BT Openreach批发FTTP网络推出千兆宽带服务
  13. 中小银行传统数据仓库向大数据平台迁移探索
  14. the7主题footer.php,【Drupal7主题】Repro 清爽杂志门户Drupal 主题
  15. 七夕表白攻略:原来数学才是世界上最浪漫的学科!
  16. layim之初始化配置
  17. 手Q支付(QQ钱包)
  18. 基于反步法backstepping的自适应控制简介
  19. 气象数据免费下载(超级好用)
  20. Unity学习-配置vuforia

热门文章

  1. 联系我们-神箭手云爬虫开发平台
  2. 多项式合并同类项c语言链表,链表透过文件读写计算两个多项式之积
  3. 编译原理词法分析器的c++实现
  4. 关于 tomcat9 下载后启动不了的问题
  5. 【Linux】LINUX内核目录文件说明
  6. hadoop 配置机架感知
  7. mysql 累计值做递减
  8. 使用Jsdelivr CDN加速博客访问速度
  9. DD镜像和E01镜像的主要区别
  10. Deep learning in video multi-object tracking A survey 论文笔记