m计划-python

2023-11-15

题目描述

小明是个鹅卵石收藏者,从小到大他一共收藏了 n块鹅卵石,编号分别为 1∼n,价值分别为 。

a1​,a2​,⋯,an​

这天他乘船准备去往蓝桥王国,然而天有不测风云,小明所在的海域下起了暴雨。

很快小明船上的积水越来越多,为了防止沉船,小明不得不选择若干块他收藏的鹅卵石丢弃。

小明制定了一套名为m计划的选择方案,其内容如下:

  • 对于任意区间 [i,i + m - 1][i,i+m−1]丢弃价值最小的鹅卵石i\in[1,n-m+1]i∈[1,n−m+1]。
  • 对于一块鹅卵石,它在 m 计划中是可以被丢弃多次的。

请你输出将被小明丢弃的鹅卵石的价值。

输入描述

输入第 1 行包含两个正整数 n,m

接下来一行包含 n 个正整 a1​,a2​,⋯,an​,表示鹅卵石的价值。

1≤m≤n≤5×105,0\leq a_i\leq 10^90≤ai​≤109

输出描述

输出共 n−m+1 行,每行输出一个整数

第 ii 行输出整数的含义为 ai​,ai+1​,⋯,ai+m−1​ 的最小值。

输入输出样例

示例 1

输入

5 3
5 3 2 4 1

输出

2
2
1

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

思路一:

(6条消息) 蓝桥杯-区间最大值-python_晓宜的博客-CSDN博客

总的来说是先通过动态规划找出以i为起始点,2^j为区间长度的最小值,因为题目中限定了长度为m,我们需要找到两个覆盖m的区间,其长度为k

代码1

from math import *
n,m=map(int,input().split())
b=list(map(int,input().split()))
max=100001
dp=[[0]*40 for row in range(max)]
a=[0]*max
for i in range(n):
  dp[i+1][0]=b[i]
k=int(log2(m))

for j in range(1,k+1):
  for i in range(1,n+2-(1<<j)):
    dp[i][j]=min(dp[i][j-1],dp[i+(1<<j-1)][j-1])

for i in range(1,n-m+2):
  print(min(dp[i][k],dp[i+m-(1<<k)][k]))

思路二:

对a数组进行遍历,在滑动窗口【i,i+m-1】内寻找最小值,为了避免超时进行剪枝,设置变量flag,如果当前的最小值发生变动,则flag设置成1,到下一个a数组时要遍历【i,i+m-1】寻找新的最小值。如果当前最小值不发生变动,则flag设置成0,因为等于min的a数组的值只可能在此时的a[i]后面,所以只需要比较当前min与新加入的哪个数即可。输出此区间的最小值。

代码二:

n,m=map(int,input().split())
b=list(map(int,input().split()))
a=[0]*50000
for i in range(n):
  a[i+1]=b[i]
flag=1

for i in range(1,n+2-m):
  if flag:
    min=a[i]
    for j in range(i,i+m):
      if a[j]<min:
        min=a[j]
  else:
    if min>a[i+m-1]:
      min=a[i+m-1]
  
  if min==a[i]:
    flag=1
  else:
    flag=0
  
  print(min)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

m计划-python 的相关文章

随机推荐

  • 【MATLAB第2期】源码分享#基于LSTM时间序列单步预测,含验证和预测未来

    MATLAB第2期 源码分享 基于LSTM时间序列单步预测 含验证和预测未来 1 运行环境 matlab2020a cpu 2 数据说明 单列数据 2018 10 2018 12 共三个月 92个数据 3 数据处理 样本标准化处理 其中 前
  • 含重复点的蚁群算法

    背景 以论文 汉中市城市生活垃圾收运路线优化研究 为背景 共37个位置 一个是车库 一个是垃圾处理中心 剩下35个是垃圾收集站 每次都是垃圾搬运车从车库出发 经过7个垃圾收集站 运到到垃圾处理中心 重复5次 直到35个垃圾收集站的垃圾都收集
  • Stata字符串函数:快捷提取字符信息

    1 substr 函数的用法 语法 substr s n1 n2 a s为需要进行提取的字符串 b n1表示提取的起始位置 c 对于不同编码的文本 n2代表不同含义 对于纯ASCII编码的文本 n2表示要提取字符长度为n2的字符串 而对于其
  • webpack打包文件过大的优化,提取第三方库(vue,ali-oss)到cdn,externals配置

    问题产生原因 vue或用其他第三方库webpack打包导致某单文件js过大 优化形式 webpack的externals配置 从输出的 bundle 中排除依赖 可将第三方库放到html用cdn加载 类似 调试方式 可参考vue cli 脚
  • 访问时被windos防火墙阻止浏览器网页找不到解决方法 postman使用

    postman使用 网页下载postman安装 添加环境 点击右边齿轮状 选择add 输入网址前缀post get各不一样 访问时被windos防火墙阻止浏览器网页找不到解决方法 点击服务管理器仪表板右上方的工具 高级windos设置 出
  • java中char的类型范围,Java中基本类型占字节数以及Uint32的意思

    初学开发的时候 我的第一门语言是JAVA android方向 基本很少考虑java中基本类型的占用字节数 直到工作中接触到串口通讯 与单片机通讯 看着那些通讯文档 看着例如Uint16 Uint32 Uint64 Char 16 Char
  • 如何使用Windows命令关闭被占用的端口

    1 使用快捷键Windows R 打开运行 输入cmd 用管理员权限打开Windows 命令窗口 2 然后执行命令 netstat nao findstr 8080 此处已8080端口为例 小伙伴们若要关闭其他窗口 只需将此处8080更换为
  • Hive Sql 最强最完整学习笔记

    一 DDL语句 数据定义语句 对数据库的操作 包含创建 修改数据库 对数据表的操作 分为内部表及外部表 分区表和分桶表 二 DQL语句 数据查询语句 单表查询 关联查询 hive函数 包含聚合函数 条件函数 日期函数 字符串函数等 行转列及
  • 线程安全list_不安全的集合类学习子笔记

    list 不安全类是什么 不安全类是指在多线程并发的时候不能保证数据正确性的类 通常是由于这些类并没有加锁造成的 为什么不设计成加锁的 其实 在list之前有个集合类vector 它是内部加锁 它是一个线程安全类 不优先使用它的原因是加锁可
  • kali firefox gah. your tab just crashed. 更新Firefox

    kali firefox gah your tab just crashed we can help choose restore this tab to reload the page 这个问题我大概八月份的一个晚上也发生过当时是kali
  • Robotframework 之exe安装(二)

    Robotframework 之pip安装 一 Robotframework 之exe安装 二 Robotframework安装过程中错误解决方案 三 一 exe安装步骤 1 python 2 7 10 amd64 msi 2 安装Robo
  • R 语言 wordcloud 与 wordcloud2 包的安装及参数说明

    一 wordcloud安装说明 install packages wordcloud 二 wordcloud2安装说明 我在RStudio编辑器直接输入 if require devtools install packages devtoo
  • Flutter中屏幕自适应(iPhone iPad Windows)

    flutter屏幕自适应 文章目录 flutter屏幕自适应 适配手机和平板的重要性 一 Sizer插件的使用 二 使用步骤 1 准备工作 2 正常使用的样式 3 判断平台设备的样式 总结 适配手机和平板的重要性 这是未进行屏幕适配的界面
  • HC-05通信的正确打开方式

    1 蓝牙模块RX TX 5 VCC分别与串口线TX RX 5 GND连接 2 打开串口助手 设置串口 波特率9600 打开串口 3 按一下蓝牙模块上的微动开关 4 在串口助手上发送AT PC端就会有OK回应 其它相应指令也会有相同回应了 我
  • Eclipse中配置Tomcat容器

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题描述 独立启动tomcat后在浏览器输入http localhost 8080可以成功访问到tomcat主页 但是当在Eclipse中启动tomcat时 虽然启动成功
  • my97日期控件插件的开发与编写

    my97日期控件插件的开发与编写 扩展一个easyui 的my97 控件 function undefined function create target var state data target my97 opts state opt
  • ERROR: Could not build wheels for hdbscan, which is required to install pyproject.toml-based project

    pip安装hdbscan报错 ERROR Failed building wheel for hdbscan Failed to build hdbscan ERROR Could not build wheels for hdbscan
  • iOS开发中的网络请求

    转载自http www cocoachina com ios 20140919 9691 html 今天来说说关于iOS开发过程中的网络请求 关于网络请求的重要性我想不用多说了吧 对于移动客户端来说 网络的重要性不言而喻 常见的网络请求有同
  • N: 无法安全地用该源进行更新,所以默认禁用该源。

    解决方法 cd etc apt sources list d 进入该目录下 删除该目录下的文件 然后更换源 sudo apt get update
  • m计划-python

    题目描述 小明是个鹅卵石收藏者 从小到大他一共收藏了 n块鹅卵石 编号分别为 1 n 价值分别为 a1 a2 an 这天他乘船准备去往蓝桥王国 然而天有不测风云 小明所在的海域下起了暴雨 很快小明船上的积水越来越多 为了防止沉船 小明不得不