hihoCoder 1051 补提交卡 最详细的解题报告
题目来源:补提交卡
解题思路:假设未提交程序的天数为: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 补提交卡 最详细的解题报告的更多相关文章
- hihoCoder 1051 补提交卡(贪心,枚举)
		#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ... 
- hihoCoder 1051 : 补提交卡 枚举
		思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ... 
- hihoCoder#1051 补提交卡
		原题地址 简单贪心 首先,补提交卡应该连续使用,其次,补提交卡应该全部用掉(如果补提交卡多于未提交天数则额外处理) 所以,依次遍历未提交日期,计算:从当前位置开始,用M张补提交卡覆盖后面连续M个数字, ... 
- hihoCoder  1051补提交卡(贪心 枚举)
		http://hihocoder.com/problemset/problem/1051 既然要选择最长连续提交天数,那么提交卡必须连续使用才有可能得到最优解,这样贪心,然后从头到尾扫一遍求出最大值. ... 
- hihocoder 在线测试 补提交卡 (Google)
		题目1 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去 ... 
- hihoCoder 1049 后序遍历 最详细的解题报告
		题目来源:后序遍历 解题思路:开始时我只知道先通过先序.中序求出二叉树,然后再后序遍历二叉树,这当然也是一种解题思路,但是会做一些无用功,比如:计算二叉树.其实,可以直接通过先序序列和中序序列直接求出 ... 
- HihoCoder - 1051:补提交卡
		时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ... 
- 【面试笔试算法】Problem 7: 补提交卡(hiho题库)
		时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了,小Ho查看自己的提交 ... 
- hiho模拟面试题2 补提交卡 (贪心,枚举)
		题目: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Ho给自己定了一个雄伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过去了.小Ho查 ... 
随机推荐
- SpringColud Eureka的服务注册与发现
			一.Eureka简介 本文中所有代码都会上传到git上,请放心浏览 项目git地址:https://github.com/839022478/Spring-Cloud 在传统应用中,组件之间的调用,通 ... 
- HotCorner-让Windows 10拥有macOS的触发角特性!
			目录 简介 软件功能 下载 安装 卸载 使用 License 作者 FAQ 简介 macOS上有一个很方便的功能:"触发角".通过这个功能可以设置当鼠标移动到屏幕的四个角时的触发事 ... 
- 3 年经验的 Java 后端妹子,横扫阿里、滴滴、美团,整理出这份厚厚的 8000 字面经!
			自序 这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了. 先说下这次面试的结果吧: 到 hr 面的:阿里.美团.滴滴.金 ... 
- php读取富文本处理html标签问题
			thinkphp的一项配置会将富文本编辑器的内容中的html标签进行转义处理 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法使用htmls ... 
- Windows 10 WSL 2.0安装并运行Docker
			在Windows 10 2004版本,微软更新WSL到了2.0,WSL 2.0已经拥有了完整的Linux内核!今天来测试一下,是否可以安装docker! 一.开启WSL 以管理员运行Powershe ... 
- 原来你是这样的BERT,i了i了! —— 超详细BERT介绍(一)BERT主模型的结构及其组件
			原来你是这样的BERT,i了i了! -- 超详细BERT介绍(一)BERT主模型的结构及其组件 BERT(Bidirectional Encoder Representations from Tran ... 
- 12.DRF-节流
			Django rest framework源码分析(3)----节流 添加节流 自定义节流的方法 限制60s内只能访问3次 (1)API文件夹下面新建throttle.py,代码如下: # utils ... 
- 有趣的条漫版 HashMap,25岁大爷都能看懂
			我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ... 
- 如何解决jeecgBoot前端运行项目之后无法获取验证码的问题
			我也是第一次接触这个开源项目,拿到项目之后,安装完环境和依赖,当我启动项目的时候,验证码却刷新不出来. 然后公司后端告诉我需要改两个接口,一个是public目录下的index.html和vue.con ... 
- 利用synchronized解析死锁的一种形成方式
			代码 import ... public class Test{ private static Object o1=new Object(); private static Object o2=new ... 
