蓝桥杯2022年第十三届省赛真题-最优清零方案 java

在这里插入图片描述
在这里插入图片描述

样例输入、输出:

  • 输入1:
4 2
1 2 3 4
  • 输出1
6
  • 输入2:
4 2
1 2 3 4
  • 输出2
6

解法:

滑动窗口解法如下。主要思路就是:用长度为k的滑动窗口,每遇到连续k个不为0的数,记录这k个数中的最小值为min,序号为min_I,做min次连续减的操作,然后窗口移动到min_I + 1。

import java.util.Scanner;

public class Main {
	/**
	 * 思路:用长度为k的滑动窗口,每遇到连续k个不为0的数,
	 * 记录这k个数中的最小值为min,序号为min_I,做min次连续减的操作
	 * 然后窗口移动到min_I + 1
	 */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int[] nums = new int[n];

        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }

        long count = 0L;
        int i = 0;

        while (i <= n - k) {
        	// 连续k个数中的最小值及其序号
        	int min = nums[i + k - 1];
			int minI = i + k - 1;
            boolean hasZero = false;

            // 找到连续 k 个数中的最小值
            // 反向遍历,有0及时退出
            for(int j = i + k - 1; j >= i; j--) {
				if(nums[j] == 0) {
					hasZero = true;
					i = j + 1;
					break;
				}
				if(nums[j] < min) {
					min = nums[j];
					minI = j;
				}
			}

            // 窗口中没有0,则进行连续减操作
            if (!hasZero) {
                count += min;

                // 减去连续 k 个数中的最小值
                for (int j = i; j < i + k; j++) {
                    nums[j] -= min;
                }
                i = minI + 1;
            }
        }

        // 计算剩余数字的总和,即每次对一个数-1操作
        for (int num : nums) {
        	count += num;
        }

        System.out.println(count);
    }
}

提交结果:
在这里插入图片描述题目链接:最优清零方案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537902.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nerf-Studio复现笔记

文章目录 1. Env2. Train3. Custom data3.1 Prepare3.2 Render and eval3.3 Results 4. Summary 1. Env The configuration process was smooth on Linux, but there are some problems with tiny_cuda_nn and colmap in Windows. // According to the installation document…

【MATLAB源码-第186期】matlab基于MLE算法的8天线阵列DOA估计仿真,对比粗估计、精确估计输出RMSE对比图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 第一部分&#xff1a;基本概念与系统设置 方向到达估计&#xff08;Direction of Arrival, DOA&#xff09;是信号处理中一项重要的技术&#xff0c;主要用于确定信号的到达方向。这种技术在雷达、无线通信和声纳等领域中有…

Solana主网使用自定义的RPC进行转账

1、引言 如果用 browser 连接主网的 RPC server 会收到 error code 403 message 為 Access forbidden, contact your app developer or supportrpcpool.com. 错误&#xff0c;因为主网的 RPC server 会检查 HTTP Header 如果判断出來是 browser 就会报告 403 錯誤。 要解決这…

LabVIEW闭环步进电机运动系统设计及精度分析

LabVIEW闭环步进电机运动系统设计及精度分析 在自动化设备不断发展的当代&#xff0c;闭环步进电机以其高精度和可靠性成为了自动化设备的重要组成部分。以LabVIEW软件为核心&#xff0c;结合运动控制卡及驱动器模块&#xff0c;设计并实现了一个闭环步进电机的多轴运动控制系…

加盟馅饼多少钱合适,加盟哪个馅饼品牌最好?

加盟馅饼&#xff0c;成本是创业者首要考虑的问题。合适的加盟费用应该考虑到品牌知名度、培训支持、店面选址等因素。一般而言&#xff0c;加盟馅饼的费用在几万元至数十万元之间&#xff0c;具体费用因品牌而异。重要的是&#xff0c;加盟费用不应是唯一的考量因素&#xff0…

SpringBoot3 + Vue3 + Uniapp + uView + Elenment 实现动态二级分类以及二级分类的管理

SpringBoot3 Vue3 Uniapp uView Elenment 实现动态二级分类以及二级分类的管理 1. 效果展示1.1 前端显示效果1.2 后台管理一级分类1.3 后台管理二级分类 2. 后端代码2.1 GoodsCategoryController.java2.2.1 GoodsCategoryMapper.java2.2.2 GoodsCategorySonMapper.java2.3.…

Pytest精通指南(06)Fixture scope作用域详解

文章目录 前言Scope 作用域写在测试用例函数文件写在conftest.py文件作用域总结验证默认作用域验证执行顺序遵循验证类中的fixture作用域验证重名fixture作用域 前言 从前文中&#xff0c;我们已经知道固件&#xff08;fixture&#xff09;的概念、原理、作用域&#xff0c;并且…

【年度典型案例】扫码就能领补贴?通知社保在线速办?当心是钓鱼骗局!

随着我们生活的数字化程度越来越高&#xff0c;完成各种业务和服务变得前所未有的便捷。只需轻轻一点手机屏幕&#xff0c;我们办事儿变得飞快又方便。然而&#xff0c;正当我们享受这种数字化带来的便捷时&#xff0c;一些不法分子也在暗中伺机而动&#xff0c;利用各种手段制…

k8s知识

k8s是用于容器编排和管理的&#xff0c;docker或者ctr是k8s的运行时&#xff0c;k8s通过容器运行时来启动容器&#xff0c;容器启动需要镜像&#xff0c;镜像可以用docker构建&#xff0c;dockerfile就是用于自定义如何构建镜像&#xff0c;所以上面那套流水线就是先用dockerfi…

Java算法小练习——五道经典算法题

练习一&#xff1a;按照要求进行排序 定义数组并存储一些朋友对象&#xff0c;利用Arrays中sort方法进行排序 要求1&#xff1a;属性有姓名、年龄、身高。 要求2&#xff1a;按照年龄的大小进行排序&#xff0c;年龄一样&#xff0c;按身高排序&#xff0c;身高一样安姓名的字母…

策略为王股票软件源代码-----如何修改为自己软件05

上面是如何修改里面的图标和图片,,, 试用版下载: http://www.ninebulls.com/ 联系方式: support@ninebulls.com 常见问题: 1。源代码经编程后产生的目标文件执行后显示为试用版,这样是否正常?如何切换成专业版? 显示为评估版是正常的,注册后即切换成专业版。 Too…

【算法一则】做算法学数据结构 - 简化路径 - 【栈】

目录 题目栈代码题解 题目 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 ‘/’ 开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&#xff0c;一个点&#xff08;.&#xff09;表…

python使用ffmpeg分割视频为Hls分片文件/使用OpenSSL加密m3u8和TS文件

FFmpeg和OpenSSL是一个开源免费的软件&#xff0c;在官网上就能下载&#xff0c; FFmpage网址&#xff08;建议选择文件名full结尾的文件&#xff09;&#xff1a;Builds - CODEX FFMPEG gyan.dev OpenSSL网址&#xff08;建议选择win64的MSI文件&#xff09;&#xff1a;Win3…

vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本

vscode 中无法运行pnpm vscode中运行pnpm报错解决办法如下 vscode中运行pnpm报错 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本 解决办法如下 1、用get-ExecutionPolicy命令在vscode终端查询状态 如果返回的是 Restr…

堆排序-升序和降序_TopK-N个数找找最大的前K个

一、堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤:1.建堆 升序:建大堆 降序:建小堆 2.利用堆删除思想来进行排序 方法一&#xff1a;把数据拷贝进堆、把堆拷贝进数据 //弊端&#xff0c;1.需要先有一个堆 2.时间复杂度拷贝数据 void HeapSort(int* …

前端学习<四>JavaScript基础——18-数组之隐秘

之前学习的数据类型&#xff0c;只能存储一个值&#xff08;字符串也为一个值&#xff09;。如果我们想存储多个值&#xff0c;就可以使用数组。 数组简介 数组&#xff08;Array&#xff09;是属于内置对象&#xff0c;数组和普通对象的功能类似&#xff0c;都可以用来存储一…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议&#xff0c;用于在互联网上提供端到端的加密通信&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议&#xff0c;以下详细阐述其工作过程&…

C语言易错知识点(3):字符数组的修改、sscanf、sprintf

字符数组是一个很细节的语法&#xff0c;涉及很多知识点&#xff0c;这篇文章我主要分享一下如何理解字符数组&#xff0c;以及对应的sscanf、sprintf有什么用 1.字符数组的初始化以及内容修改易错点 字符数组的初始化方式有两种&#xff0c;一种是直接用字符串进行初始化&am…

蓝桥杯第2152题——红绿灯

问题描述 爱丽丝要开车去上班, 上班的路上有许多红绿灯, 这让爱丽丝很难过。为 了上班不迟到, 她给自己的车安装了氮气喷射装置。现在她想知道自己上班最 短需要多少时间。 爱丽丝的车最高速度是 米每秒, 并且经过改装后, 可以瞬间加速到小于 等于最高速的任意速度, 也可以瞵…

(Java)数据结构——图(第五节)Kruskal的实现最小生成树(MST)

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 Kruskal算法&#xff08;Kruskal的实现原理&#xff09; Kruskal算法的原理&#xff1a; 就是每次取最小的边&#xff0c;看看是不是与已经选择的构成回路&#x…