「题解」P5858 「SWTR-03」Golden Sword

博客介绍了如何使用动态规划解决P5858问题,探讨了时间复杂度为O(n^3)和空间复杂度为O(n^2)的解决方案,并提到可以通过单调队列优化时间复杂度,同时提出空间复杂度可以利用滚动数组来降低。博主分享了解题思路,但表示代码直接引用,仅作思路交流。
摘要由CSDN通过智能技术生成

题目背景

小E不幸在一场战斗中失去了他的金宝剑。

题目描述

制造一把金宝剑需要n种原料,编号为1到n,编号为i 的原料的坚固值为ai​。炼金是很讲
究放入原料的顺序的,因此小E必须按照1到n的顺序依次将这些原料放入炼金锅。但是,
炼金锅的容量非常有限,它最多只能容纳w个原料。所幸的是,每放入一个原料之前,小
 E可以从中取出一些原料,数量不能超过s个。我们定义第 i 种原料的耐久度为:放入第
 i种原料时锅内的原料总数*ai​,则宝剑的耐久度为所有原料的耐久度之和。小E当然想让
 他的宝剑的耐久度尽可能得大,这样他就可以带着它进行更多的战斗,请求出耐久度的
 最大值。

输入格式

第一行,三个整数 n,w,sn,w,sn,w,s。
第二行,nnn 个整数 a1,a2,…,ana_1,a_2,\dots,a_na1​,a2​,…,an​。

输出格式

一行一个整数,表示耐久度的最大值。

输入输出样例

输入
5 3 3
1 3 2 4 5
输出
40
题解
读完题,我们可以想到:
1. 已经放入锅中的材料没有本质上的区别,对后面放入材料的贡献都为1。
2. 加入新物品后,锅中材料数为j,可在材料数为j-1直接加入,或取出s个材料。
故此,定义f[i,j]表示,放到第i个物品,箱子里有j个元素的最大价值和。
状态转移方程:

f[i,j]= max ⁡ k = 1 → m a x ( 1 , j − s ) f [ i − 1 ]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值