题目来源:补提交卡

解题思路:假设未提交程序的天数为:a1,a2,....,an,补交的张数为M。依次从a1,a2,....,an中去掉连续的 K 天(0<=K<=M),然后再来计算剩余数组中最长连续提交天数。

具体算法(Java版,直接AC)

 import java.util.Scanner;

 public class Main {

     //计算数组中最长连续提交天数
public static int getMax(int[] array) {
int[] copy = new int[array.length + 2];
copy[0] = 0;
copy[array.length + 1] = 101;
for (int i = 0; i < array.length; i++) {
copy[i + 1] = array[i];
}
int max = Integer.MIN_VALUE;
for (int i = 1; i < copy.length; i++) {
int sum = copy[i] - copy[i - 1] - 1;
max = max > sum ? max : sum;
}
return max;
} //从下标为start开始,删除长度为count个元素
public static int[] remove(int[] array, int count, int start) {
int[] copy = new int[array.length - count];
int index = 0;
for (int i = 0; i < start; i++) {
copy[index++] = array[i];
}
for (int i = start + count; i < array.length; i++) {
copy[index++] = array[i];
}
return copy;
} //计算使用k张补交卡后,最长连续提交天数
public static int solve(int[] array, int k) {
int max = Integer.MIN_VALUE;
for (int i = 0; i <= array.length - k; i++) {
int sum = getMax(remove(array, k, i));
max = max > sum ? max : sum;
}
return max;
} public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
while (T > 0) {
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] array = new int[N];
for (int i = 0; i < N; i++) {
array[i] = scanner.nextInt();
}
int max = Integer.MIN_VALUE;
for (int i = 0; i <= M; i++) {
int sum = solve(array, i);
max = sum > max ? sum : max;
}
System.out.println(max);
--T;
}
}
}

hihoCoder 1051 补提交卡 最详细的解题报告的更多相关文章

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

    #1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ...

  2. hihoCoder 1051 : 补提交卡 枚举

    思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ...

  3. hihoCoder#1051 补提交卡

    原题地址 简单贪心 首先,补提交卡应该连续使用,其次,补提交卡应该全部用掉(如果补提交卡多于未提交天数则额外处理) 所以,依次遍历未提交日期,计算:从当前位置开始,用M张补提交卡覆盖后面连续M个数字, ...

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

    http://hihocoder.com/problemset/problem/1051 既然要选择最长连续提交天数,那么提交卡必须连续使用才有可能得到最优解,这样贪心,然后从头到尾扫一遍求出最大值. ...

  5. hihocoder 在线测试 补提交卡 (Google)

    题目1 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去 ...

  6. hihoCoder 1049 后序遍历 最详细的解题报告

    题目来源:后序遍历 解题思路:开始时我只知道先通过先序.中序求出二叉树,然后再后序遍历二叉树,这当然也是一种解题思路,但是会做一些无用功,比如:计算二叉树.其实,可以直接通过先序序列和中序序列直接求出 ...

  7. HihoCoder - 1051:补提交卡

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ...

  8. 【面试笔试算法】Problem 7: 补提交卡(hiho题库)

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ...

  9. hiho模拟面试题2 补提交卡 (贪心,枚举)

    题目: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Ho给自己定了一个雄伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了.小Ho查 ...

随机推荐

  1. docker中mongdb常用操作

    一.进入 --使用本地命令行查看 docker exec -it mongos bash

  2. 如何 SSH 到 Linux 服务器里的特定目录及执行命令?

    你是不是有遇到过这样的场景?使用 SSH 命令进入到服务器,然后再用 cd 命令进入到对应目录,再继续进行你的工作. 这种操作对于新手来讲特别常见,良许之前也是这样.在本文,老司机将带你来进行更高效的 ...

  3. 使用vscode 开发go项目的最新姿势. go版本1.14.2

    使用了go 1.14.2. 版本, 再也不用建src, pkg, bin 目录了,   以及再也不用强制配置GOPATH了 前提条件: 必须是 go mod 项目. 在工程目录下, 执行这样的命令生成 ...

  4. 使用本地http的yum源

    使用http作为本地yum源 场景 在生产环境中,有大概好几十台linux同系统版本的操作系统,为了安装普通软件,现在的做法是向每台机器上上传一个iso镜像,然后将镜像挂在,配置本地的yum源,实现基 ...

  5. 使用itext asian 解决中文不显示的问题

    本人使用的itextpdf版本是5.4.3<dependency> <groupId>com.itextpdf</groupId> <artifactId&g ...

  6. 一小时彻底搞懂RabbitMQ

    windows上面安装rabbitmq-server-3.7.4.exe 首先需要安装otp_win64_20.3.exe 步骤1:安装Erlang RabbitMQ 它依赖于Erlang,需要先安装 ...

  7. Python 简明教程 --- 16,Python 高阶函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...

  8. 入门大数据---Storm搭建与应用

    1.Storm在Linux环境配置 主机名 tuge1 tuge2 tuge3 部署环境 Zookeeper/Nimbus Zookeeper/Supervisor Zookeeper/Supervi ...

  9. git配置用户和邮箱

    1. 查看git用户配置 git config user.name 2. 查看git邮箱配置 git config user.email 3. 配置git用户 git config --global ...

  10. Electron: 如何以 Vue.js, Vuetify 开始应用

    Electron: 使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架 Vue.js: Web 前端用于构建用户界面的渐进式框架 Vuetify: Vue.js 的 ...