题干:

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

你有N张卡片,每张卡片上写着一个正整数Ai,并且N张卡片上的整数各不相同。

此外,你还有M张百搭卡片,可以当作写着任意正整数的卡片。

一个“顺子”包含K张卡片,并且满足卡片上的整数恰好是连续的K个正整数。我们将其中最大的整数称作顺子的值。

例如1-2-3-4-5的值是5,101-102-103的值是103。

请你计算用给定的N张卡片和M张百搭卡片,能凑出的值最大的顺子是多少,并且输出该顺子的值。

输入

第一行包含3个整数,N,M和K。

第二行包含N个整数,A1, A2, ... AN。

对于50%的数据,1 ≤ N, K ≤ 1000

对于100%的数据,1 ≤ N, K ≤ 100000 0 ≤ M < K 0 ≤ Ai ≤ 100000000

输出

一个整数代表答案

样例输入

10 1 5
1 4 2 8 5 7 10 11 13 3

样例输出

11

解题报告:

首先不难证明最终答案的左端点一定取在给定的值处。(这个可以贪心证明。)

然后双指针扫一遍就完事了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
ll a[MAX];
int main()
{ll n,m,k,ans;cin>>n>>m>>k;for(int i = 1; i<=n; i++) scanf("%lld",a+i);sort(a+1,a+n+1);int l=n,r=n;while(l>=1 && r>=1) {if(a[l] + k - 1  < a[r]) r--;else {if(r - l + 1 >= k - m) {ans = a[l] + k - 1;break;}else l--;}}cout << ans;return 0 ;}

双指为了更清晰的表达思路(是对每一个左指针,右指针进行的决策),一般用for循环,可以这么写:

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
ll a[MAX];
int main()
{ll n,m,k,ans;cin>>n>>m>>k;for(int i = 1; i<=n; i++) scanf("%lld",a+i);sort(a+1,a+n+1);int l=n,r=n;for(;l > 0;--l){while(a[l] + k - 1 < a[r]) r--;if(r - l + 1 >= k - m){ans = a[l] + k - 1; break;}}cout << ans;return 0 ;}

【hihocoder - offer编程练习赛60 B】最大顺子(双指针,思维)相关推荐

  1. 【hihocoder - offer编程练习赛60 C】路径包含问题(LCA,树上倍增)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一棵N的节点的树,节点编号1~N,并且1号节点是根节点. 小Hi会反复询问小Ho一个问题:给定两个节点a和b, ...

  2. 【hihocoder - offer编程练习赛60 A】hohahola(贪心,二分)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 有一种叫作hohahola的饮料,售价是X元一瓶.小Hi非常喜欢这种饮料,但是他现在身无分文. 不过小Hi有N张优 ...

  3. 【Hihocoder - offer编程练习赛86 - C】跳数游戏(STLset或map预处理,dp)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个长度为N的数组A1, A2, ... AN,请你判断其中有几个元素Ai按如下跳跃规则能跳到最后一个元素AN ...

  4. 【Hihocoder - offer编程练习赛39 - D】前缀后缀查询(后缀字典树,哈希,思维)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:512MB 描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在 ...

  5. *【Hihocoder - offer编程练习赛94 - A】最短管道距离(中位数)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN). 现在H国 ...

  6. 【Hihocoder - offer编程练习赛93 套题题解】交错01串(贪心,暴力)方格矩阵高度(模拟)数对(STLmultiset)修整土地(网络流)

    A: 题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi要将一个01串S传输给小Ho,由于S非常长,所以小Hi决定用长度为N的2个数组A = [A1, A2, ...

  7. 最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...

    描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...

  8. 牛客网剑指offer编程实践1-10题

    牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  9. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

最新文章

  1. labelme3.16.5 标注工具的安装与下载
  2. ubuntu 12.04.1升级至ubuntu 12.10出现gcc-4.7依赖库错误的解决办法
  3. react与jQuery对比,有空的时候再翻译一下
  4. 【网址收藏】OpsAnt 云原生开源运维平台
  5. 服务器信息化平台,管理系统的信息化平台.ppt
  6. linux伙伴系统算法,Linux伙伴系统(三)--分配
  7. 优动漫PAINT核心功能介绍
  8. 记忆化搜索 codevs 2241 排序二叉树
  9. 【论文写作】精品课程教学网站中用户管理如何写
  10. IE下 jqModal的问题
  11. 关于引擎代码从Delphi 2007 升级至Delphi 10.1的一些历程
  12. vs2017 开关“/NOENTRY”只与 DLL 兼容;链接时不使用“/NOENTRY”
  13. 怎么快速调出计算机资源管理器,Win7下快速打开资源管理器的五个方法
  14. 虚拟机vmware centos7 扩展磁盘空间
  15. 三基色配色表java_【调色】颜色配色表 适合重彩搭配用
  16. 凌恩生物明星产品:一文读懂细胞器基因组!
  17. 在Word2007文档中设置页面边框
  18. Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be ope
  19. “双十一”大考的背后,爱贝做了哪些?
  20. keras-nightly 导入包报错 cannot import name ‘Adam‘ from ‘keras.optimizers‘

热门文章

  1. 计算机应用综合实践实验心得,综合实践活动培训心得体会范文(精选5篇)
  2. python输出运行时间表_Python编程第十二课 了解程序运行的时间
  3. java非堆内存_java – 监视JVM的非堆内存使用情况
  4. mysql if 多个_MySQL使用IF语句CONCAT多个字段
  5. python可以开多少线程_python多线程详解
  6. java 当天唯一ids_java-为不同的时间字符串接收相同的ZonedDat...
  7. python接口自动化测试框架实战从设计到开发_Python接口自动化测试框架实战 从设计到开发...
  8. mysql-8.0.12语法_mysql-8.0.12 (免安装版) 安装详解
  9. 简单的UTF8编码生成
  10. muduo for v210