当前位置: 首页 > article >正文

最优清零方案 蓝桥杯 2138 python实现

问题描述

给定一个长度为 N 的数列 A1​,A2​,⋯,AN​ 。现在小蓝想通过若干次操作将 这个数列中每个数字清零。

每次操作小蓝可以选择以下两种之一:

  1. 选择一个大于 0 的整数, 将它减去 1 ;
  2. 选择连续 K 个大于 0 的整数, 将它们各减去 1 。

小蓝最少经过几次操作可以将整个数列清零?

输入格式

输入第一行包含两个整数 N 和 K 。

第二行包含 N 个整数 A1​,A2​,⋯,AN​ 。

输出格式

输出一个整数表示答案。

样例输入

4 2
1 2 3 4

样例输出

6

这道题是十三届省赛蓝桥杯的最后一题

思路:这道题我们可以用一个滑动窗口,窗口的长度为k,从A1--A1+k-1,一直滑到An,在每个滑动窗口给窗口中每个位置上的数值减去窗口内的最小值,即A1-Ai,A2-Ai......A1+K-1-Ai,Ai为这个窗口中的最小值,然后给count+Ai。最后再统计剩下位置的剩余数字之和sum,输出sum+count即可

n,k=map(int,input().split())
a=[int(i) for i in input().split()]
count=0#计数
i=0
while i<n-k+1:
    c =min(a[i:i+k])#c为滑动窗口内的最小值
    if c!=0:
        for j in range(i,i+k):#滑动窗口内的所有数都减去c
            a[j]-=c
            if a[j]==0:#当有一个位置减c为0时,说明这个位置就是滑动窗口内的最小值,下一个滑动窗口从它的下一个位置开始
                i=j+1 
for i in range(n):
    if a[i]!=0:
        count+=a[i]
print(cnt)


http://www.kler.cn/a/6790.html

相关文章:

  • D3中颜色的表示方法大全
  • 【微软:多模态基础模型】(5)多模态大模型:通过LLM训练
  • 联通光猫(烽火通信设备)改桥接教程
  • 表格的选择弹窗,选中后返显到表格中
  • 基于Python实现的HDR图像处理算法
  • Django5 2024全栈开发指南(二):Django项目配置详解
  • Java初阶 ( String 类)
  • 【新2023Q2押题JAVA】华为OD机试 - 打折买水果
  • 浅谈JVM(二):类加载机制
  • 4_vim的高级用法配置
  • 【Redis】redis跟数据库的数据同步问题
  • 【蓝桥杯】【嵌入式组别】第八节:EEPROM
  • TCP报文的交互过程
  • 【FLEXPART】拉格朗日粒子扩散模式
  • 2023-Python实现有道翻译接口加密解密
  • Unity组件——LayoutElement (UI自动布局组件)说明
  • Springmvc程序
  • Unity Animation -- 导入动画
  • QComboBox 和 QPlainTextEdit
  • Java阶段一Day15
  • SuperMap GIS基础产品三维GIS FAQ集锦(1)
  • Cannot read properties of undefined (reading ‘uri‘)
  • 怎么将图文、视频生成一个二维码?多内容在线生成二维码的方法
  • [Netty] Selector选择器以及Reactor实现 (七)
  • Pycharm创建自定义代码片段
  • Sentinel1.8.6规则持久化到Nacos2.2.0集群记录