每日一题 | 召唤兽问题
时间:2022-07-23
本文章向大家介绍每日一题 | 召唤兽问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
昨日问题
题目出自codeforces,链接:https://codeforces.com/gym/102625/problem/C
这是C题,算是有一定难度了,但其实也并不算难。这是一定经典的贪心问题,我们希望最终得到的结果最大,并且改成绩的次数是有限的,所以题目可以等价于我们每次改动成绩的收益最大。
那怎么样可以做到收益最大呢?就更简单了,我们每次将改动后成绩最好的改动应用在当前成绩最低的科目上。
比如在这个例子当中,我们第二门课的成绩最低只有1分,而第二个改动可以改成5分,是分数最高的改动,那么我们很明显应该将它应用在1分上,让它变成5分,这样我们可以得到4分的收益。
所以我们首先需要对所有科目的成绩进行排序,再对改动按照改动后的分数进行由大到小排序,将改动后分数最大的改动应用在当前成绩最低的科目上。当所有改动都执行完了或者是改动后的分数比当前分数还要低了的时候,说明已经无法获得收益了,这时算法结束。
s = input()
n, m = int(s.split(' ')[0]), int(s.split(' ')[1])
scores = sorted(map(int, input().split(' ')))
ret = 0
operations = []
for i in range(m):
line = input()
operations.append((int(line.split(' ')[0]), int(line.split(' ')[1])))
# 对改动按照改动后的分数倒排
operations = sorted(operations, key=lambda x: x[1], reverse=True)
# idx记录当前的改动
idx = 0
# 记录当前的改动执行的个数
j = 0
for i in range(n):
# 如果当前的改动已经到数量了
if j == operations[idx][0]:
j = 0
idx += 1
# 如果所有改动已经执行完了或者是改动之后的分数比当前小
if idx >= m or scores[i] >= operations[idx][1]:
ret += sum(scores[i:])
break
j += 1
ret += operations[idx][1]
print(ret)
今日问题
召唤兽问题
有一个游戏里的召唤英雄可以召唤召唤兽,这个英雄技能的冷却时间是1秒。召唤召唤兽需要x点魔法,每秒钟英雄可以回复y点魔法值。已知英雄的魔法值上限是n,在游戏开始时魔法值是满的。请问经过m秒之后,英雄可以召唤出多少只召唤兽?
本题为多组测试数据,给定一个整数t表示测试数据的组数。
- END -
- CentOS6 安装并破解Jira 7
- Martin Odersky访谈录所思
- 解决Boost库链接出错问题
- 引入Option优雅地保证健壮性
- java正则校验,密码必须由字母和数字组成
- Spring Boot集成JasperReports生成PDF文档
- Redux框架reducer对状态的处理
- 使用Spring Cloud Security OAuth2搭建授权服务
- Nginx性能优化
- linux 如何正确的关闭mongodb
- 运用Aggregator模式实现MapReduce
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- spring boot项目在外部tomcat环境下部署
- 利用Actor实现管道过滤器模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++实现epoll echo服务器
- 相关性 ≠ 因果性,用图的方式打开因果关系
- 斗转星移 | 三万字总结Kafka各个版本差异
- Hadoop支持Lzo压缩配置及案例
- Spark SQL快速入门系列之Hive
- 手把手学机器学习算法中数据预处理(附代码)
- 「Workshop」第十六期:Pandas 使用介绍
- .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇
- Android程序员想进大厂?算法很重要!2020年必学的 10 大算法关注一下
- PWN:Largebin Attack
- 实现LRU算法
- 逻辑漏洞之无密码登录(vlcms)
- Python开发 常见异常和解决办法
- 约瑟夫问题
- AUC、ROC详解:原理、特点&算法