小红书2020校招算法笔试题卷一 编程题no.3 击败魔物

题目

击败魔物

薯队长来到了迷宫的尽头,面前出现了N只魔物,Hi表示第i只魔物的血量,薯队长需要在T个回合内击败所有魔物才能获胜。每个回合薯队长可 以选择物理攻击一只魔物,对其造成1点伤害(物理攻击次数无上限);        或者消耗1点法力释放必杀技对其造成固定X点伤害(薯队长开始拥有M 点法力)。问X至少多大,薯队长才有机会获胜;如果无论如何都无法在T回合内获胜,则输出-1 

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

第一行三个整数分别表示:N,T,M 第二行有N个整数:H1,H2,H3...HN 

输出描述:

输出一个整数,表示必杀技一次最少造成多少固定伤害 

分析

以后补上

Python代码


'''
输入例子:
3 4 3
5 2 1
输出例子:
3
'''def can_defeat_monsters(n,t,m,_h,x)->bool:'''判断法力值为m,必杀技伤害为x时杀死h全部怪兽需要的最小回合数,是否小于t'''h = _h.copy()# print(n,t,m,h,x)cost_t = 0left_m = m# 先来一轮魔法攻击for i in range(n):if h[i] >= x:now_m = h[i]//xif left_m >= now_m:left_m -= now_mh[i] -= x * now_mcost_t += now_mif left_m == 0: # 所有的法力值都用完了breakelse:h[i] -= x * left_mcost_t += left_mleft_m = 0break# print(cost_t)# 如果法力值还有剩的,那么从高h值的怪兽开始攻击sorted_h = sorted(h,reverse=True)for i in range(n):if sorted_h[i] and left_m: # 当前这个怪兽是活的且法力值有剩余cost_t += 1left_m -= 1sorted_h[i] = 0else:break # 要么没有怪兽活着,要么法力值耗尽了# print(cost_t)# 如果还有怪物或者,那也全部物理攻击left_h_sum = sum(sorted_h)cost_t += left_h_sum# print(cost_t)if cost_t <= t:return Trueelse:return Falsedef main():n,t,m = map(int,input().split())h = list(map(int,input().split()))# 不可能打败的情况1 回合数小于怪物数if t < n:print(-1)return # 不可能打败的情况2 # 高H全被法力直接杀死,剩余怪兽的h值总和大于剩余的回合数sorted_h = sorted(h,reverse=True)left_sum_h = sum(sorted_h[m:])if t-m < left_sum_h:print(-1)return # 可以打败怪物,那么使用二分查找的方式得到最小的Xlow,high = 1,max(h)result = -1while low <= high:mid = (low+high)//2if can_defeat_monsters(n,t,m,h,mid):result = midhigh = mid - 1else:low = mid+1print(result)if __name__ == "__main__":main()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ctf.show】获得百分之百的快乐

1.打开靶场 2.根据页面代码&#xff0c;get请求值只能小于4位数&#xff0c;否则会回显hack&#xff01; 尝试后确实是这样的&#xff1a; 请求值小于4位数&#xff0c;页面无变化&#xff1a; 发送请求值ls查看内容 3.根据2返回的值&#xff0c;发送值为?1>nl 创建一个nl…

vivado 使用基本触发器模式

使用基本触发器模式 基本触发器模式用于描述触发条件 &#xff0c; 即由参与其中的调试探针比较器组成的全局布尔公式。当“触发器模式 (Trigger Mode) ”设置为 BASIC_ONLY 或 BASIC_OR_TRIG_IN 时 &#xff0c; 即启用基本触发器模式。使用“基本触发器设置 (Basic Trig…

Mysql 常用关键字总结

MySQL关键字是指在MySQL中具有特殊含义和功能的保留字。以下是一些常用的MySQL关键字及其作用&#xff1a; 1. SELECT&#xff1a;用于从数据库中检索数据。 2. INSERT&#xff1a;用于向数据库中插入新的行。 3. UPDATE&#xff1a;用于更新数据库中的现有数据。 4. DELETE&a…

【面试题】细说mysql中的各种锁

前言 作为一名IT从业人员&#xff0c;无论你是开发&#xff0c;测试还是运维&#xff0c;在面试的过程中&#xff0c;我们经常会被数据库&#xff0c;数据库中最经常被问到就是MySql。当面试官问MySql的时候经常会问道一个问题&#xff0c;”MySQL中有哪些锁&#xff1f;“当我…

数据结构-----Lambda表达式

文章目录 1 背景1.1 Lambda表达式的语法1.2 函数式接口 2 Lambda表达式的基本使用2.1 语法精简 3 变量捕获3.1 匿名内部类3.2 匿名内部类的变量捕获3.3 Lambda的变量捕获 4 Lambda在集合当中的使用4.1 Collection接口4.2 List接口4.3 Map接口 HashMap 的 forEach() 5 总结 1 背…

第十三届蓝桥杯真题:x进制减法,数组切分,gcd,青蛙过河

目录 x进制减法 数组切分 gcd 青蛙过河 x进制减法 其实就是一道观察规律的题。你发现如果a这个位置上的数x&#xff0c;b这个位置上的数是y&#xff0c;那么此位置至少是max(x,y)1进制。一定要把位置找对啊 #include <bits/stdc.h> using namespace std; typedef l…

蓝桥杯20年第十一届国赛-答疑|贪心

题目链接&#xff1a; 蓝桥杯2020年第十一届国赛真题-答疑 - C语言网 (dotcpp.com) 思路&#xff1a; 这道题 计算的是时刻之和&#xff0c;写出这个时刻之和的计算式子&#xff0c;以下的si&#xff0c;ai的i为任意次序答疑的同学编号 &#xff0c;不等于输入的顺序 时刻之…

如何卸载干净 IDEA(图文讲解)

更新时间 2022-12-20 11:一则或许对你有用的小广告 星球 内第一个项目&#xff1a;全栈前后端分离博客项目&#xff0c;演示地址&#xff1a;Weblog 前后端分离博客, 1.0 版本已经更新完毕&#xff0c;正在更新 2.0 版本。采用技术栈 Spring Boot Mybatis Plus Vue 3.x Vit…

没有网没有移动存储的情况下两台电脑如何互相传输数据

无网无移动存储情况下两台电脑数据互传探秘 一、直连网线传输数据二、局域网文件共享其他 在信息化时代的今天&#xff0c;电脑作为重要的数据处理工具&#xff0c;在日常生活和工作中扮演着不可或缺的角色。然而&#xff0c;有时我们会遇到一些特殊情况&#xff0c;如没有网络…

如何开辟动态二维数组(C语言)

1. 开辟动态二维数组 C语言标准库中并没有可以直接开辟动态二维数组的函数&#xff0c;但我们可以通过动态一维数组来模拟动态二维数组。 二维数组其实可以看作是一个存着"DataType []"类型数据的一维数组&#xff0c;也就是存放着一维数组地址的一维数组。 所以&…

DOTS Unity.Physics物理引擎碰撞事件处理

最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎&#xff0c;今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来…

【C++成长记】C++入门 | 命名空间、输入输出、缺省参数

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;C​​​​​​​❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、C和C语言的区别和联系 二、命名空间 1、命名空间定义 2、命名空间使用 三、C输…

基于yolov9来训练人脸检测

YOLOv9是一个在目标检测领域内具有突破性进展的深度学习模型&#xff0c;尤其以其在实时性与准确性上的优秀表现而受到广泛关注。针对人脸检测这一特定任务&#xff0c;YOLOv9通过其架构创新和算法优化提供了强大的支持。 YOLOv9在继承了YOLO系列&#xff08;如YOLOv7、YOLOv8&…

二叉树--相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true 思路 一、…

90天玩转Python—14—基础知识篇:变量进阶

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

JavaEE 初阶篇-深入了解 CAS 机制与12种锁的特征(如乐观锁和悲观锁、轻量级锁与重量级锁、自旋锁与挂起等待锁、可重入锁与不可重入锁等等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 乐观锁与悲观锁概述 1.1 悲观锁&#xff08;Pessimistic Locking&#xff09; 1.2 乐观锁&#xff08;Optimistic Locking&#xff09; 1.3 区别与适用场景 2.0 轻…

C++高级特性:柯里化过程与std::bind(六)

1、柯里化过程 1.1、operator()的引入 现在需要完成这样一个需求&#xff1a;有一个函数每次调用返回的结果不一样。例如&#xff1a;两次调用的返回值都不一样那么就可以达到这种目的 1.1.1、简单点的写法 可以给一个全局的变量&#xff08;静态变量&#xff09;&#xff…

java项目两种方法实现大批量数据:存在就更新,不存在就新增,脏数据就删除。

java项目两种方法实现大批量数据&#xff1a;存在就更新&#xff0c;不存在就新增&#xff0c;脏数据就删除。 文章目录 java项目两种方法实现大批量数据&#xff1a;存在就更新&#xff0c;不存在就新增&#xff0c;脏数据就删除。一、法一&#xff1a;存在就更新&#xff0c;…

Docker 安装Kali Linux作为攻防演练的工具

使用Docker Compose安装和运行Kali Linux是一种简便且灵活的方式&#xff0c;特别适合那些希望在隔离环境中快速部署和管理多个Docker容器的用户。以下是详细的步骤&#xff0c;包括如何设置Docker Compose文件来运行Kali Linux&#xff1a; 步骤 1: 安装Docker 如果你的系统…

深入理解JVM垃圾收集器

相关系列 深入理解JVM垃圾收集算法-CSDN博客 目前市面常见的垃圾收集器有Serial、ParNew、Parallel、CMS、Serial Old、Parallel Old、G1、ZGC以及有二种不常见的Epsilon、Shenandoah的&#xff0c;从上图可以看到有连线的的垃圾收集器是可以组合使用&#xff0c;是年轻代老年代…