【Nowcoder-TOP101】BM1.小明打联盟

2023-11-01 12:59

本文主要是介绍【Nowcoder-TOP101】BM1.小明打联盟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:
链接:https://ac.nowcoder.com/acm/problem/14553
来源:牛客网

小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放时间和固定的伤害值为:
1.乌鸦坐飞机 释放时间:x 固定伤害值:a
2.蜘蛛吃耳屎 释放时间:y 固定伤害值:b
3.饿狼前进 释放时间:z 固定伤害值:c

他还有一个大招,其释放的时间是一个区间【L,R】,可以在区间内任意时间点释放出技能,其如果在L+i时刻释放技能,其能够打出的伤害值为:temp+A*i
这里temp值表示技能的基础伤害(同时也就是在时刻L释放技能的伤害值),A是一个常数。

小明很喜欢研究连招使得在有限的时间内打出最高的伤害,现在他想要在T长度单位时间内打出最高的伤害,问这个最大伤害值。
在这里插入图片描述
在这里插入图片描述

思路:
问题归类:完全背包。
大招蓄力时间有没有收益加成,要看A与temp/L之间的关系:

  • A < temp / L:没有受益加成
  • A > temp / L:有受益加成
  • A = temp / L:可有可无

而A,temp, L皆为由输入获取到的常数,所以有无收益加成,在得到他们的值后即可确定。只要有收益加成,则尽量蓄力;如果没有收益加成,则选择最短蓄力时间即可(此仅针对大招蓄力加成而言)。

故对于[L,R]范围的物品,其实要么选L(未蓄力的大招),要么选R(蓄满力的大招),要么选其它的i(蓄了一部分力的大招) ,这样最优。L和R被当作基本技能转进背包,其他的i 用来补充最后不足以释放小技能的时间,因此要在最后再用蓄力一部分的大招更新一下最优值。
注:之所以不将所有[L,R]范围的物品化为L,L+1,L+2,…L+R,是因为区间范围可能很大,有可能会超时。

解答:

from collections import deque
import sys
deq = deque()
for line in sys.stdin:deq += line.strip().split(' ')
while deq:skill= []T = int(deq.popleft())dp = [0]*(T+1)skill.append((int(deq.popleft()),int(deq.popleft())))skill.append((int(deq.popleft()),int(deq.popleft())))skill.append((int(deq.popleft()),int(deq.popleft())))L,R,temp,A = int(deq.popleft()),int(deq.popleft()),int(deq.popleft()),int(deq.popleft())skill.append((L, temp))skill.append((R, temp+A*(R-L)))for i,item in enumerate(skill):for t in range(item[0], T+1):dp[t] = max(dp[t], dp[t-item[0]] + item[1])for i in range(L+1, R):dp[T] = max(dp[T], dp[T-i]+temp+A*(i-L))print(dp[T])

这篇关于【Nowcoder-TOP101】BM1.小明打联盟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323142

相关文章

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

【HDU】4521 小明系列问题——小明序列 线段树+DP

小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1632    Accepted Submission(s): 485 Problem Description   大家都知道小明最喜欢研究

猫猫学IOS(十二)UI之UITableView学习(上)LOL英雄联盟练习

猫猫分享,必须精品 素材代码地址:http://blog.csdn.net/u013357243/article/details/44706671 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果图 源代码 NYViewController的代码 //ps:新建iOS交流学习群:304570962 可以

宝藏!《联盟自控强化班洗髓题库》(青龙篇) 1-9章:甄选部分

本文内容,全部选自自动化考研联盟的:初试《自控强化班洗髓题库》(青龙篇)。 目录 Part1:资料封面&目录 Part2:资料各个章节具体内容 第1章 自动控制的一般概念 第2章 控制系统的数学模型 第3章 线性系统的时域分析 第4章 线性系统的根轨迹法 第5章 线性系统的频域分析法 第6章 线性系统的校正方法 第7章 线性离散系统的分析与校正 第8章 非线性控制系统分析

云联惠涉传!商家联盟再起新秀!某店模式 三年百亿销售额!

大家好,我是吴军,任职于一家致力于软件开发领域的公司,担任产品经理的职位。 今天,我想和大家探讨一下曾经风靡一时的云联惠平台。在其全盛时期,该平台吸引了超过一千万的用户,并且资金规模达到了6000亿的庞大数字。 回想起几年前,云联惠无疑成为了热议的焦点,各种宣传和讨论无处不在。我也对其产生了浓厚的兴趣,并对其进行了初步的探究。 但是,由于当时政策的不确定性,云联惠最终走向了没落,成为

arm64的windows可以玩英雄联盟

ARM64 架构的 Windows 设备(如搭载 ARM 处理器的 Windows 笔记本)能够运行像《英雄联盟》和 Photoshop 这样的应用,主要归功于微软在 Windows 操作系统中实现的兼容性技术,尤其是针对 x86 应用程序的仿真(emulation)和 ARM64 原生支持的改进。 1. 仿真技术(Emulation) 微软在 Windows 10 和 Windows 11

NowCoder HJ17 坐标移动

前言 华为机试刷题 题目: HJ17 坐标移动 编程语言: C++ 解题状态: 基础不牢,磕磕绊绊的 思路 本题主要是模拟题,分为三个步骤:获取字符串后利用分号获取坐标移动步骤;判断步骤是否合法;移动坐标。 代码 #include <algorithm>#include <iostream>#include <string>#include <vector>using na

nyoj469 擅长排列的小明 II

擅长排列的小明 II 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 小明十分聪明,而且十分擅长排列计算。 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1、第一个数必须是1 2、相邻两个数之差不大于2 你的任务是给出排列的种数。 输入 多组数据。每组数据中输入一个

nyoj49 开心的小明

开心的小明 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品