hiho模拟面试题2 补提交卡 (贪心,枚举)
题目:
- 例子输入
-
3
5 1
34 77 82 83 84
5 2
10 30 55 56 90
5 10
10 30 55 56 90 - 例子输出
-
76
59
100
描写叙述
小Ho给自己定了一个雄伟的目标:连续100天每天坚持在hihoCoder上提交一个程序。100天过去了。小Ho查看自己的提交记录发现有N天由于贪玩忘记提交了。于是小Ho软磨硬泡、强忍着小Hi歧视的眼神从小Hi那里要来M张"补提交卡"。每张"补提交卡"都能够补回一天的提交,将原本没有提交程序的一天变成有提交程序的一天。小Ho想知道通过利用这M张补提交卡,能够使自己的"最长连续提交天数"最多变成多少天。
输入
第一行是一个整数T(1 <= T <= 10),代表測试数据的组数。
每一个測试数据第一行是2个整数N和M(0 <= N, M <= 100)。第二行包括N个整数a1, a2, ... aN(1 <= a1 < a2 < ... < aN <= 100),表示第a1, a2, ... aN天小Ho没有提交程序。
输出
对于每组数据,输出通过使用补提交卡小Ho的最长连续提交天数最多变成多少。
贪心在这里不是非常明显,主要是枚举。特别关键的一点是,我们要补的m天一定是连续的几个空,想到这一点,那么这道题就攻克了。枚举每一个空,注意0天是第一个空,从该空開始连续填m个空。不包含当前空。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int day[102];
int n,m; void solve()
{
if(m>=n)
{
cout<<100<<endl;
return ;
}
int ans=0;
day[0]=0,day[n+1]=101;
sort(day,day+n);
for(int i=0;i+m+1<=n+1;i++)//哪些地方有空
{
int temp=day[i+m+1]-day[i]-1;//从该地方的后一个空開始连续填上m个空
if(ans<temp)
ans=temp;
}
cout<<ans<<endl;
}
int main()
{
int t;cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>day[i];
solve();
}
return 0;
}
hiho模拟面试题2 补提交卡 (贪心,枚举)的更多相关文章
- hihoCoder 1051 补提交卡(贪心,枚举)
#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ...
- [HIHO1051]补提交卡(枚举,贪心)
题目链接:http://hihocoder.com/problemset/problem/1051 思路:先排序,然后枚举连续的长度为m的子段,用这个段之后的第一个天数减去这个段之前的第一个天数再-1 ...
- hihoCoder 1051 : 补提交卡 枚举
思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ...
- 【面试笔试算法】Problem 7: 补提交卡(hiho题库)
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ...
- HihoCoder - 1051:补提交卡
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ...
- hihocoder 在线测试 补提交卡 (Google)
题目1 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去 ...
- hihoCoder#1051 补提交卡
原题地址 简单贪心 首先,补提交卡应该连续使用,其次,补提交卡应该全部用掉(如果补提交卡多于未提交天数则额外处理) 所以,依次遍历未提交日期,计算:从当前位置开始,用M张补提交卡覆盖后面连续M个数字, ...
- hihoCoder 1051 补提交卡 最详细的解题报告
题目来源:补提交卡 解题思路:假设未提交程序的天数为:a1,a2,....,an,补交的张数为M.依次从a1,a2,....,an中去掉连续的 K 天(0<=K<=M),然后再来计算剩余数 ...
- hihoCoder 1051补提交卡(贪心 枚举)
http://hihocoder.com/problemset/problem/1051 既然要选择最长连续提交天数,那么提交卡必须连续使用才有可能得到最优解,这样贪心,然后从头到尾扫一遍求出最大值. ...
随机推荐
- gcc 源代码分析-前端篇2
2. 对ID及保留字的处理 在c语言中,系统预留了非常多keyword.也被称为保留字,比方表示数据类型的int,short,char,控制分支运行的if,then等. 不论什么keyword, ...
- HDU 3507
斜率DP入门题.推荐看看这篇http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 看过之后,自己思考,发现有些不妥之处就是,其 ...
- httpurlconnection get String
public static String getJSON(String url, int timeout) { HttpURLConnection c = null; try { long reque ...
- HDU 1113 Word Amalgamation (map 容器 + string容器)
http://acm.hdu.edu.cn/showproblem.php?pid=1113 Problem Description In millions of newspapers across ...
- iOS9中,swift判断相机,相册权限,选取图片为头像
在iOS7以后要打开手机摄像头或者相册的话都需要权限,在iOS9中更是更新了相册相关api的调用 首先新建一个swift工程,在SB中放上一个按钮,并在viewController中拖出点击事件 ok ...
- vue --- 关于多个router-view视图组件,渲染同一页面
vue.js多视图的使用,可以提高网页组件化,模块化 比如使用多视图,可以将网站页面封装header.footer.navbar等多个公共部分, 遇到修改公共部分的文案信息等数据的时候,不再需要逐一修 ...
- 关于1-n任意的gcd的和
gcd和 题目 GCD sum 公约数的和 大意是让你求1-n任意两个数的gcd的和之类的. 解法 显然你需要枚举对吧,不然你怎么可能求出gcd呢? 其次我们需要一些数学推理 令F(n)表示\(\su ...
- .NET MVC权限设计思考之切入点
在WebForm下我们一般会设计个PageBase继承Page,在OnInit方法中实现对基本权限的验证业务,然后所有的页面在继承PageBase直接继承这项基本权验证业务.而在.NET MVC下我们 ...
- (转载)Android快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup
[置顶] [Android]快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup 标签: androidAdapter快速开发0耦合 2016-12-1 ...
- CoordinatorLayout:android之ScrollingActivity
1.效果图 2.新建SrcollingActivity后生成代码为: <?xml version="1.0" encoding="utf-8"?> ...