第十三届蓝桥杯省赛 最优清零方案题解

2023-11-16

题目描述

给定一个长度为N的数列A1, A2, … , AN。
现在小蓝想通过若干次操作将这个数列中每个数字清零。
每次操作小蓝可以选择以下两种之一:

  1. 选择一个大于0的整数,将它减去1;
  2. 选择连续K个大于0的整数,将它们各减去1。
    小蓝最少经过几次操作可以将整个数列清零?

思路

没有采用什么特别的算法,就是用到一些数论的知识点
总次数 = 分段减的次数 + 一个一个减的次数 总次数 = 分段减的次数 + 一个一个减的次数 总次数=分段减的次数+一个一个减的次数
因为分段减的效率最高,所以能分段减就先分段减,最后数组中剩下的全是离散的数(被0隔开)。这些数只能一个一个减,剩下的数之和就是一个一个减的次数,而分段分段减的次数在减的过程中统计。以[1,2,3,4],K=2为例:
在这里插入图片描述

代码

def lastNotZeroIndex(A,start,end):
    j = start
    for i in range(start,end,1):
        if A[i] == 0:
            j = i
    return j
def bestZero(A,K):
    count = 0
    i = 0
    while i < len(A):
        if i+K <= len(A):
            minElement = min(A[i:i+K])
            if minElement != 0:
                count += minElement
                for j in range(i,i+K,1):
                    A[j] -= minElement
            i = lastNotZeroIndex(A,i,i+K)
        i += 1
    return sum(A) + count
N,K = map(int,input().split(' '))
A = list(map(int,input().split(' ')))
print(bestZero(A,K))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十三届蓝桥杯省赛 最优清零方案题解 的相关文章

随机推荐

  • 数据在OSI七层模型中的名字 数据帧、数据包、数据报以及数据段

    数据帧 数据包 数据报以及数据段 OSI参考模型的各层传输的数据和控制信息具有多种格式 常用的信息格式包括帧 数据包 数据报 段 消息 元素和数据单元 信息交换发生在对等OSI层之间 在源端机中每一层把控制信息附加到数据中 而目的机器的每一
  • 多种系统如何安装并启动Redis

    1 Windows 系统下安装 首先坏消息是reids官网没有提供windows版的redis 但好消息是微软的开源技术团队在gtihub上开发和维护了windows版的redis 具体如何使用参考下这片文章 windows系统本地安装re
  • Struts2 重点总结 (2)

    国际化 资源文件和资源包 要用Struts实现国际化和本地化 首先要定义资源文件的名称 这个文件会包含用默认语言编写的会在程序中出现的所有消息 这些消息以 键 值 对的形式存储 如下 error validation localtion T
  • 软测入门(十)Jmeter接口测试基础

    接口测试流程 接口测试的流程 分析接口文档和需求 编写接口测试计划 5W1H 编写接口测试用例 接口测试执行 输出接口测试报告 接口测试分类 Web接口测试 服务器接口测试 模块接口测试 单元测试 接口测试的要点 数据是否正常 参数类型错误
  • 人工智能基础部分16-神经网络与GPU加速训练的原理与应用

    大家好 我是微学AI 今天给大家介绍一下人工智能基础部分16 神经网络与GPU加速训练的原理与应用 在深度学习领域 神经网络已经成为了一种流行的 表现优秀的技术 然而 随着神经网络的规模越来越大 训练神经网络所需的时间和计算资源也在快速增长
  • Ajax传json对象(jQuery)

    Ajax传json对象 相信很多小伙伴想要通过Ajax传输json数据给后端 本来直接发送一个data JSON stringify obj 就可以了 但是发现后端的请求参数中有一个参数需要int类型 这个时候就需要用到对象了 封装对象 首
  • 知识蒸馏基础及Bert蒸馏模型

    为了提高模型准确率 我们习惯用复杂的模型 网络层次深 参数量大 甚至会选用多个模型集成的模型 这就导致我们需要大量的计算资源以及庞大的数据集去支撑这个 大 模型 但是 在部署服务时 就会发现这种 大 模型推理速度慢 耗费内存 显存高 这时候
  • 如何在pycharm中使用配置好的virtualenv环境

    使用pycharm自动建立虚拟环境 file gt setting gt interpreter 选择添加环境 添加虚拟环境 这里选择不勾选第一个选项框 之后 将 requirements txt 文件放到虚拟目录 venv 下 pycha
  • MODIS数据的简介和下载(一)——MODIS数据简介

    借最近上课实习上机内容 来介绍MODIS数据相关方面内容 本部分主要包括了MODIS数据的简介和下载的问题 本篇是第一部分 MODIS的简介 主要分为三个部分 1 MODIS传感器简介及参数 2 MODIS产品及命名规则 3 MODIS的典
  • 【马士兵】Python基础--19

    Python基础 19 文章目录 Python基础 19 with语句 os模块的常用函数 os path模块的常用方法 with语句 with open logo png rb as src file with open copy2log
  • JS组件Bootstrap实现弹出框和提示框效果代码

    前言 对于Web开发人员 弹出框和提示框的使用肯定不会陌生 比如常见的表格新增和编辑功能 一般常见的主要有两种处理方式 行内编辑和弹出框编辑 在增加用户体验方面 弹出框和提示框起着重要的作用 如果你的系统有一个友好的弹出提示框 自然能给用户
  • FreeRTOS学习---“定时器”篇

    总目录 FreeRTOS学习 任务 篇 FreeRTOS学习 消息队列 篇 FreeRTOS学习 信号量 篇 FreeRTOS学习 事件组 篇 FreeRTOS学习 定时器 篇 FreeRTOS提供了一种软件定时器 用来快速实现一些周期性的
  • hi3861 通过MQTT协议连接OneNet平台(配置好的环境+详细步骤)

    目录 前言 下载配置完毕的镜像 下载链接 修改Onenet信息 添加编译 编译 烧录 HiBurn下载 查看状态 作者留言 更多详情参考gitee网站 前言 hi3861单片机通过MQTT协议连接OneNet平台 下载配置完毕的镜像 下载链
  • 消除WORD中的域连接

    消除WORD中的域连接 Control A Control Shift F9
  • Docker服务启动报错:Job for docker.service failed because the control process exited with error

    报错信息 Job for docker service failed because the control process exited with error code See systemctl status docker servic
  • Idea的 Cannot resolve method ‘getAttribute(java.lang.String)‘问题解决

    问题 写javaweb jsp时使用application getAttribute出现报错 Cannot resolve method getAttribute java lang String 解决方法 第一步 File gt Proj
  • ansible定时任务模块和用户组模块使用

    接上篇 还是一些基础模块的使用 这里主要介绍的是系统模块的使用 下面例子都进行过相关的实践 从而可以直接进行使用相关的命令 3 用户模块的使用 用户模块主要用来管理用户账号和用户的属性 对远程主机用户进行批量管理 用户模块依赖的指令为use
  • 数据回归算法

    文章目录 效果一览 文章概述 研究内容 程序设计 参考资料 效果一览 文章概述 数据回归算法 Matlab实现高斯过程回归预测模型 研究内容 高斯过程回归 Gaussian Process Regression 是一种基于概率的非参数回归方
  • [转]DLL中使用全局变量

    默认只是 其宿主进程的全局变量 也是说 每个宿主程序都有这个副本 所以这个全局变量不能被所有进程共用 windows好像是用 copy on write机制进行保护的 如果共用 需要设置共享段 并把它放到共享段中 这样 一个宿主进程改了它的
  • 第十三届蓝桥杯省赛 最优清零方案题解

    题目描述 给定一个长度为N的数列A1 A2 AN 现在小蓝想通过若干次操作将这个数列中每个数字清零 每次操作小蓝可以选择以下两种之一 选择一个大于0的整数 将它减去1 选择连续K个大于0的整数 将它们各减去1 小蓝最少经过几次操作可以将整个