hihoCoder - 1051 - 补提交卡 (枚举,贪心!!)

#1051 : 补提交卡

时间限制:2000ms

单点时限:1000ms

内存限制:256MB

描述

小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的最长连续提交天数最多变成多少。

样例输入
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

思路:简单枚举,首先先肯定一件事,只有将连续的几个未提交全部都变为已提交,然后扫一遍期间贪心一下才可以得到最大连续时间

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int a[105];

int main()
{
	int T;
	scanf("%d", &T);
	while(T--)
	{
		int n, m;
		scanf("%d %d", &n, &m);
		for(int i=1; i<=n; i++) scanf("%d", &a[i]);
		if(m>=n) { printf("100\n"); continue; }
		a[0] = 0, a[n+1] = 101;
		int ans = 0;
		for(int i=0; i<=n; i++)
		{
			if(i+m+1 > n+1) break;
			int p = a[i+m+1] - a[i] - 1;
			if(ans<p) ans = p;
		}
		printf("%d\n", ans);
	}
	return 0;
} 
时间: 2024-10-11 05:19:04

hihoCoder - 1051 - 补提交卡 (枚举,贪心!!)的相关文章

hihoCoder 1051补提交卡(贪心 枚举)

http://hihocoder.com/problemset/problem/1051 既然要选择最长连续提交天数,那么提交卡必须连续使用才有可能得到最优解,这样贪心,然后从头到尾扫一遍求出最大值. 5 1 数组为a[i] 下标从1开始. 34 77 82 83 84 假如 提交卡用在 第一个数那么连续提交天数变成 a[2]-a[0]-1,第二个数 a[3]-a[1]-1,以此类推. 1 #include<cstdio> 2 #include<cstring> 3 int a[1

hihoCoder 1051 补提交卡 最详细的解题报告

题目来源:补提交卡 解题思路:假设未提交程序的天数为:a1,a2,....,an,补交的张数为M.依次从a1,a2,....,an中去掉连续的 K 天(0<=K<=M),然后再来计算剩余数组中最长连续提交天数. 具体算法(Java版,直接AC) 1 import java.util.Scanner; 2 3 public class Main { 4 5 //计算数组中最长连续提交天数 6 public static int getMax(int[] array) { 7 int[] copy

补提交卡

Badboy学长: 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 #include<string> 6 #include<map> 7 #include<cstdio> 8 using namespace std; 9 10 int main(){ 11 int t,m,n,result; 12 int

[HIHO1051]补提交卡(枚举,贪心)

题目链接:http://hihocoder.com/problemset/problem/1051 思路:先排序,然后枚举连续的长度为m的子段,用这个段之后的第一个天数减去这个段之前的第一个天数再-1就是把这个区间全填上后的连续提交天数. 1 /* 2 ━━━━━┒ギリギリ♂ eye! 3 ┓┏┓┏┓┃キリキリ♂ mind! 4 ┛┗┛┗┛┃\○/ 5 ┓┏┓┏┓┃ / 6 ┛┗┛┗┛┃ノ) 7 ┓┏┓┏┓┃ 8 ┛┗┛┗┛┃ 9 ┓┏┓┏┓┃ 10 ┛┗┛┗┛┃ 11 ┓┏┓┏┓┃ 12 ┛┗

hiho_1051_补提交卡

题目大意 给出1到100这100个数中的某些数字(各个数字不同),这些数字形成一个个间断的连续区间,向1-100中添加M个数字,使得添加后1-100中某连续区间的长度最大,求出添加M个数字后,最长的连续区间的长度. 分析 计算机解决问题嘛,就是搜索解空间,不断的进行尝试(当然在尝试的基础上进行优化,就出现了DFS,BFS,DP,二分,递归,回溯等算法).如果尝试在空缺的位置上添加相应的数字,则指定超时.那么,尝试另一种方式进行搜索:对于区间[beg, end] 可以根据当前的情形得出要使得[be

hihocoder-1051-补提交卡

小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交记录发现有N天因为贪玩忘记提交了.于是小Ho软磨硬泡.强忍着小Hi鄙视的眼神从小Hi那里要来M张"补提交卡".每张"补提交卡"都可以补回一天的提交,将原本没有提交程序的一天变成有提交程序的一天.小Ho想知道通过利用这M张补提交卡,可以使自己的"最长连续提交天数"最多变成多少天. (0 <= N, M <= 100

枚举+贪心 HDOJ 4932 Miaomiao&#39;s Geometry

题目传送门 1 /* 2 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 3 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则往右边放, 4 判断一下,取最大值.这题二分的内容少 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <cmath> 10 using n

hihoCoder 1578 Visiting Peking University 【贪心】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)

#1578 : Visiting Peking University 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Ming is going to travel for n days and the date of these days can be represented by n integers: 0, 1, 2, -, n-1. He plans to spend m consecutive days(2 ≤ m ≤ n)in Beijing. Durin

2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)

爱奇艺的自制节目 爱奇艺作为一家视频网站巨头,要为上亿的用户每天都提供“悦享品质”的服务.除了引进一些优秀的影视作品外,爱奇艺还做了一些诸如奇葩说.晓松奇谈的自制节目.爱奇艺最近又准备制作四档新的节目,它们分别是 W, X, Y, Z:但是现在能用来录这些节目的演播室只有两个,分别是演播室 A 和演播室 B. W 节目的现场搭建比较复杂,每一期都要在演播室 A 来录制,X 节目的摄影机位调整会影响节目质量,每一期都固定在演播室 B 来录制.而节目 Y 和节目 Z 的搭建都比较容易移动,摄影也没有