Sheep_Li在打完训练赛后总是喜欢开一把王者,她最近练上了一个新英雄:不知火舞。为了提高二技能扇子的伤害,后期她会把所有其他装备卖掉换成贤者之书或者博学者之怒。 现在问题来了:假设当前她有N枚金币,她需要用这些金币去购买下面两种装备: 贤者之书:2990金币,获得400法术攻击。 博学者之怒:2300金币,获得240法术攻击,唯一被动:法术攻击提高30%. 例:如果Sheep_Li买了一个贤者之书和一个博学者之怒,那么她将获得(400+240)*130%=832. 其中,博学者之怒Sheep_Li只会购买一次(唯一被动),贤者之书无限购买。 假设没有购买装备数量限制,Sheep_Li最高可以获得多少法术攻击? 输入描述: 第1行输入测试用例数量T(1<=T<=105) 第2-T+1行输入一个整数N(1<=109),代表初始金币数量。 输出描述: 对于每组测试用例,输出最高法术攻击. 示例1 输入 复制 4 2200 2500 6000 10000 输出 复制 0 312 832 1352 说明 对于用例3,Sheep_Li买了博学者之怒和一个贤者之书. 对于用例4,Sheep_Li买了博学者之怒和两个贤者之书.

时间: 2024-03-30 21:37:31 浏览: 62
这道题可以使用贪心算法来解决。因为贤者之书的攻击力比博学者之怒的攻击力高,所以我们优先选择买贤者之书。当我们买不起贤者之书时,再考虑是否购买博学者之怒。 具体的策略是,如果当前还有足够的金币可以购买贤者之书,则一直购买贤者之书,直到无法再购买为止。然后再判断是否还有足够的金币可以购买博学者之怒,如果可以购买,则购买一次。 下面是参考代码:
相关问题

链接:https://ac.nowcoder.com/acm/contest/59840/D 来源:牛客网 Sheep_Li在打完训练赛后总是喜欢开一把王者,她最近练上了一个新英雄:不知火舞。为了提高二技能扇子的伤害,后期她会把所有其他装备卖掉换成贤者之书或者博学者之怒。 现在问题来了:假设当前她有N枚金币,她需要用这些金币去购买下面两种装备: 贤者之书:2990金币,获得400法术攻击。 博学者之怒:2300金币,获得240法术攻击,唯一被动:法术攻击提高30%. 例:如果Sheep_Li买了一个贤者之书和一个博学者之怒,那么她将获得(400+240)*130%=832. 其中,博学者之怒Sheep_Li只会购买一次(唯一被动),贤者之书无限购买。 假设没有购买装备数量限制,Sheep_Li最高可以获得多少法术攻击?

这是一道贪心问题。我们先尽可能购买博学者之怒,因为它的唯一被动可以让我们获得更多的法术攻击。当金币不足以购买博学者之怒时,我们再购买贤者之书。因为贤者之书可以无限购买,所以我们可以一直购买直到金币不足为止。 具体实现上,我们可以先购买一个博学者之怒,然后不断判断是否还有足够的金币去购买另一个博学者之怒。如果可以,就购买;如果不行了,就购买贤者之书直到金币不足。 以下是Python代码实现: ```python n = int(input()) ans = 0 while n >= 2300: ans += 552 n -= 2300 if n >= 2990: n -= 2990 ans += 400 print(ans) ``` 输入金币数量,然后按照上述算法求解并输出结果。

用Java写一个狼和羊在地图上的

以下是用 Java 写的狼和羊在地图上的示例代码: ``` import java.util.Random; public class Map { private int width; private int height; private boolean[][] occupied; public Map(int width, int height) { this.width = width; this.height = height; this.occupied = new boolean[width][height]; } public boolean isOccupied(int x, int y) { if (x < 0 || x >= this.width || y < 0 || y >= this.height) { return true; } return this.occupied[x][y]; } public void occupy(int x, int y) { if (x >= 0 && x < this.width && y >= 0 && y < this.height) { this.occupied[x][y] = true; } } public void vacate(int x, int y) { if (x >= 0 && x < this.width && y >= 0 && y < this.height) { this.occupied[x][y] = false; } } } public class Animal { protected int x; protected int y; public Animal(int x, int y) { this.x = x; this.y = y; } public void move(int dx, int dy) { this.x += dx; this.y += dy; } public int getX() { return this.x; } public int getY() { return this.y; } } public class Wolf extends Animal { private int energy; public Wolf(int x, int y) { super(x, y); this.energy = 10; } public void eat(Sheep sheep) { this.energy += sheep.getNutritionValue(); } public boolean isStarving() { return this.energy <= 0; } public void loseEnergy() { this.energy--; } public int getEnergy() { return this.energy; } } public class Sheep extends Animal { private int nutritionValue; public Sheep(int x, int y) { super(x, y); this.nutritionValue = 5; } public int getNutritionValue() { return this.nutritionValue; } } public class Simulation { private Map map; private Wolf wolf; private Sheep sheep; private Random random; public Simulation(int width, int height) { this.map = new Map(width, height); this.random = new Random(); int wolfX = this.random.nextInt(width); int wolfY = this.random.nextInt(height); this.wolf = new Wolf(wolfX, wolfY); this.map.occupy(wolfX, wolfY); int sheepX = this.random.nextInt(width); int sheepY = this.random.nextInt(height); while (this.map.isOccupied(sheepX, sheepY)) { sheepX = this.random.nextInt(width); sheepY = this.random.nextInt(height); } this.sheep = new Sheep(sheepX, sheepY); this.map.occupy(sheepX, sheepY); } public void run() { int time = 0; while (!this.wolf.isStarving()) { time++; System.out.println("Time: " + time); System.out.println("Wolf: (" + this.wolf.getX() + ", " + this.wolf.getY() + "), Energy: " + this.wolf.getEnergy()); System.out.println("Sheep: (" + this.sheep.getX() + ", " + this.sheep.getY() + ")"); int dx = this.random.nextInt(3) - 1; int dy = this.random.nextInt(3) - 1; this.wolf.move(dx, dy); if (this.wolf.getX() == this.sheep.getX() && this.wolf.getY() == this.sheep.getY()) { this.wolf.eat(this.sheep); this.map.vacate(this.sheep.getX(), this.sheep.getY()); int newX = this.random.nextInt(this.map.width); int newY = this.random.nextInt(this.map.height); while (this.map.isOccupied(newX, newY)) { newX = this.random.nextInt(this.map.width); newY = this.random.nextInt(this.map.height); } this.sheep = new Sheep(newX, newY); this.map.occupy(newX, newY); } else { this.wolf.loseEnergy(); } System.out.println("============================================="); } System.out.println("Wolf is starving!"); } } public class Main { public static void main(String[] args) { Simulation simulation = new Simulation(10, 10); simulation.run(); } } ``` 以上代码定义了五个类,`Map`、`Animal`、`Wolf`、`Sheep` 和 `Simulation`。`Map` 类代表地图,有 `width`、`height` 和 `occupied` 三个属性,分别代表宽度、高度和哪些位置被占用了;`Animal` 类代表动物,有 `x` 和 `y` 两个属性,分别代表横坐标和纵坐标;`Wolf` 类继承自 `Animal` 类,有 `energy` 属性,代表能量,还有 `eat`、`isStarving`、`loseEnergy` 和 `getEnergy` 方法,分别代表吃、是否饥饿、消耗能量和获取当前能量值;`Sheep` 类继承自 `Animal` 类,有 `nutritionValue` 属性,代表营养价值,还有 `getNutritionValue` 方法,返回营养价值;`Simulation` 类代表仿真,有 `map`、`wolf`、`sheep` 和 `random` 四个属性,分别代表地图、狼、羊和随机数生成器,还有 `run` 方法,代表运行仿真。 在 `Simulation` 类的构造函数中,会初始化地图、狼和羊。在 `run` 方法中,会循环执行以下操作: 1. 输出当前时间、狼的位置和能量、羊的位置。 2. 随机生成一个移动的方向,并让狼移动。 3. 如果狼和羊在同一个位置,狼吃掉羊,并在地图上移除羊,随机生成一个新的羊,并在地图上放置。 4. 否则,狼消耗能量。 5. 输出分割线。 如果狼的能量小于等于 0,就输出 `Wolf is starving!`。 这只是一个简单的示例,可以根据需要进一步扩展。

相关推荐

最新推荐

recommend-type

全球与中国锂电池专用高性能胶带市场现状及未来发展趋势(2024版).docx

全球与中国锂电池专用高性能胶带市场现状及未来发展趋势(2024版).docx
recommend-type

PostgreSQL基础介绍.zip

PostgreSQL是一个开源的关系型数据库管理系统,它是由PostgreSQL全球开发社区维护的。PostgreSQL支持SQL标准,并提供了许多其他特性,如复杂的数据类型、触发器、存储过程、事务和并发控制等。 PostgreSQL是一个开源的关系型数据库管理系统,它是由PostgreSQL全球开发社区维护的。PostgreSQL支持SQL标准,并提供了许多其他特性,如复杂的数据类型、触发器、存储过程、事务和并发控制等。 PostgreSQL是一个开源的关系型数据库管理系统,它是由PostgreSQL全球开发社区维护的。PostgreSQL支持SQL标准,并提供了许多其他特性,如复杂的数据类型、触发器、存储过程、事务和并发控制等。
recommend-type

高校校园大脑建设方案(高层版)PPT(47页).pptx

智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
recommend-type

PHP自定义模板引擎:分离前端与后端的开发利器

PHP的自定义模板引擎是Web开发中一种重要的工具,它旨在解决前后端分离的问题,提高开发效率并促进团队协作。在传统的Web开发流程中,前端工程师负责设计网站外观,后端工程师编写程序逻辑,这可能导致反复迭代和代码混杂。模板引擎的引入,使得页面设计与PHP逻辑分离,前端只需关注界面元素和配置,后端专注于业务逻辑。 模板引擎的基本原理是将页面设计作为模板文件,其中的静态部分(如结构、样式和布局)与动态内容(如数据库查询结果、用户输入等)分开。动态内容通常被特殊的“变量”或标记包裹,这些变量会在服务器端由PHP脚本处理时被替换为实际值。例如,Smarty、PHPLIB、IPB等是常见的PHP模板引擎,它们提供了丰富的API和语法,允许开发者灵活地控制页面展现。 使用模板引擎的优势包括: 1. 代码组织:模板引擎将HTML和PHP分离,减少了代码的复杂性,使维护和更新变得更加容易,尤其是对于大型项目和团队协作。 2. 可重用性和扩展性:模板可以复用,减少重复工作,且随着项目的演变,只需修改模板而不必改动底层代码。 3. 模块化开发:模板引擎支持模块化的页面设计,每个模板只关注自己的功能区域,有利于代码的模块化管理和复用。 4. 提高开发效率:前端工程师无需深入了解后端代码,可以更快地创建和修改界面,后端工程师则专注于业务逻辑,提升了开发速度。 5. 易于测试和调试:模板引擎的分离使得测试和调试更方便,特别是对于复杂的页面布局和动态内容。 6. 适应性强:模板引擎能轻松处理多种数据源,如数据库、API或其他服务,从而增强了应用的灵活性。 总结来说,PHP的自定义模板引擎是现代Web开发的重要组成部分,它通过模板与逻辑的分离,实现了前后端职责明确,提高了开发质量,促进了团队协作,使得开发过程更加高效和整洁。选择和使用合适的模板引擎,对于提升Web项目的整体开发体验至关重要。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【Java性能小贴士】:每天一个复杂度分析工具使用技巧,性能优化不二法门

![复杂度分析工具](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy92ekVpYjlJUmhaRDdiMmpwc2liVHNhWnhXamZoeWZxSXBlRFpYTFpIOGlidjkwMmh0Z1doWmpGOVE2Y1BBbnJlVzVtb09ublVCSnJrekh0ZVNMWmN4aFpQUS82NDA?x-oss-process=image/format,png) # 1. Java性能优化概述 Java作为广泛使用的编程语言,在企业级应用中承载了巨大的责任,因此性能优化显得尤为
recommend-type

from PyQt5.Qwt

"from PyQt5.QtWidgets import QApplication" 这行代码是在导入PyQt5库中的QApplication类,用于创建和管理应用程序的生命周期。`PyQt5`是一个Python绑定的Qt库,它提供了一组高级的图形用户界面组件,而`QApplication`则是Qt应用程序的核心部分,负责处理事件循环、窗口系统集成等。 如果你想要了解关于`Qwt`的相关内容,它是另一种强大的科学可视化库,它扩展了Qt的功能,特别是针对工程绘图和数学计算。`from PyQt5.Qwt import *`会导入Qwt中的所有类和模块,方便你在PyQt5项目中使用Qwt的各种功
recommend-type

Laravel入门教程:从入口到输出的全面解析

"这篇Laravel学习教程详细讲解了从入口到输出的过程,涵盖了预备知识、路由定义、中间件创建和表单验证等关键步骤。" 在深入探讨Laravel的运行流程之前,首先需要理解几个基本概念。Laravel框架的根目录通常位于`/path/to`,我们简称为Laravel目录,而Web服务器可访问的目录是`Laravel/public`,我们称之为Web目录。Web目录下的`index.php`是整个应用程序的入口文件。 I. 预备知识 Laravel的Web请求处理通常始于`index.php`。这个文件引导请求进入框架,并加载服务容器和服务提供者,初始化整个应用环境。 II. 过程详解 1. 定义web路由 当用户访问如`http://la.com/test/yueshu/female/20?name=chenxuelong`这样的URL时,路由负责解析这些参数。在`Laravel/routes/web.php`文件中,你可以定义路由规则,比如: ```php Route::get('/test/{name}/{sex}/{age}', 'TestController@test'); ``` 这条路由会将请求转发到`TestController`的`test`方法,并传递URL中的`name`、`sex`和`age`作为参数。 2. 定义中间件 中间件在请求处理前后执行特定操作,例如授权、日志记录或数据验证。在`Laravel/app/Http/Middleware`创建一个名为`Test.php`的中间件类,实现`handle`和`terminate`方法,分别用于处理请求和在处理完毕后执行某些操作。然后,在`Laravel/app/Http/Kernel.php`的`routeMiddleware`数组中注册这个中间件。 ```php 'Test' => \App\Http\Middleware\Test::class, ``` 3. 中间件的使用 在控制器或路由中指定中间件,确保在执行具体操作前,中间件的逻辑得以执行。例如,将`Test`中间件添加到`TestController`的`test`方法。 4. 表单验证(请求) Laravel提供了强大的表单验证功能,通过自定义验证类处理HTTP请求。在`Laravel/app/Http/Requests`目录下创建`FormValidate.php`,继承`FormRequest`基类,覆盖其`rules`方法以定义验证规则,并可选择性地覆盖`failedValidation`方法来处理验证失败的情况。 5. 控制器处理 控制器是业务逻辑的主要载体,接收到路由传递的请求后,控制器负责调用相关的方法来处理请求。在本例中,`TestController`的`test`方法会接收路由参数,并根据业务需求进行相应的操作。 6. 视图与响应 处理完业务逻辑后,控制器通常会返回一个视图或者直接生成HTTP响应。视图可以使用Blade模板引擎,将数据传递给视图并渲染成HTML,最终返回给客户端。 7. 输出过程 Laravel的响应机制会把控制器返回的内容转化为HTTP响应,包括状态码、头部信息和主体内容,然后发送回浏览器。 通过以上步骤,我们可以清晰地看到一个Laravel应用从接收到请求,到处理业务逻辑,再到生成并返回响应的完整流程。理解这个过程对于深入学习和优化Laravel应用至关重要。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

Java算法优化:从理论到实践的复杂度分析工具应用,打造高效算法

# 1. Java算法优化的重要性与目标 ## 1.1 理解算法优化的必要性 Java算法优化是提升软件性能的核心环节之一。随着业务逻辑的复杂化,对效率和资源的合理利用提出了更高的要求。优化算法不仅是解决性能瓶颈的关键,也是提高用户体验的重要手段。随着计算能力和数据量的激增,合理地优化算法,可以减少对硬件资源的依赖,降低系统成本,提升系统可靠性。 ## 1.2 确立优化目标 算法优化的目标在于提高运行效率和减少资源消耗。具体而言,要实现以下几方面: - **执行时间最优化**:缩短算法处理数据的时间,提供快速响应。 - **空间利用最小化**:降低内存占用,避免不必要的数据复制。 -