洛谷 P5858 「SWTR-03」Golden Sword

技术洛谷 P5858 「SWTR-03」Golden Sword 洛谷 P5858 「SWTR-03」Golden Sword题目链接:
https://www.luogu.com.cn/problem

罗p 5858“swtr-03”金剑

标题链接:

https://www.luogu.com.cn/problem/P5858

主要观点:

小娥打算铸剑。现在有n种的原料,编号从1到N,下标I的原料的固体值是ai。它们以1比N的顺序加入炼丹炉中,但炼丹炉只能容纳w原料,每种原料加入前最多只能取出s种原料。剑的耐久性是所有原材料的耐久性之和,而第I种原材料的耐久性是锅内原材料的总数(包括正在放入的)* ai,寻求最大的耐久性。

思考:

原料摆放整齐,同时限制添加原料。可以想象构建一个二维的DP数组DP [I] [J],其中I表示当前放入了哪些原料,J表示当前炉内有多少原料,所以我们可以写下面的代码。

for(LL I=1;I=n;I) //目前原材料有哪些?

for(LL j=w;j=1;j-)//现在的炉子里有多少原料?

for(LL k=j-1;k=最小值(w,j s-1);K) //投入前可能留下的原材料

dp[i][j]=最大值(dp[i][j],DP[I-1][k]j * a[I]);//添加新原料

上述代码的时间复杂度为O(n * w * w),所以我们考虑优化。可以看出,最里面的for循环实际上是在找到最大的耐久性后添加新的原材料,这可以通过单调的队列来实现。

代码:

#包含位/stdc。h

使用命名空间标准;

#定义LL长长

const LL INF=-1e 16 10;

const int maxn=5e3 10

LL n,w,s,dp[maxn][maxn],ans,q[maxn],pos[maxn];

向量L1 a(maxn);

int main(){ 0

cin西北;

for(LL I=1;I=n;(一)

scanf('%lld ',a[I]);

for(LL I=0;I=n;(一)

for(LL j=0;j=w;j)

DP[I][j]=INF;

DP[0][0]=0;

for(LL I=1;I=n;I){ 0

LL l=1,r=1;

q[l]=DP[I-1][w];

pos[l]=w;

for(LL j=w;j=1;j-){ 0

而(l=r位置[l]j s-1)l;//取出原材料

而(l=r q[r]DP[I-1][j-1])r-;//构建单调递减的队列

位置[r]=j-1;//记录添加的原材料数量。

q[r]=DP[I-1][j-1];

DP[I][j]=q[l]j * a[I];

}

}

ans=INF

for(LL I=0;I=w;(一)

ans=max(ans,DP[n][I]);

cout ans ' \ n

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/74745.html

(0)

相关推荐

  • elasticsearch 教程(elasticsearch配置优化详解)

    技术Elasticsearch 预处理的技巧示例分析本篇文章为大家展示了Elasticsearch 预处理的技巧示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1、上问题

    攻略 2021年12月16日
  • 如何分析web开发7中的模块化

    技术如何分析web开发7中的模块化如何分析web开发7中的模块化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。支持json格式数据返回:例:有问题,web页

    攻略 2021年11月25日
  • 和田玉怎样鉴别,怎么判断一块和田玉的好坏

    技术和田玉怎样鉴别,怎么判断一块和田玉的好坏如何区分和田玉的好坏和田玉怎样鉴别?和田玉深受中国人的喜爱,和田玉文化又是中国玉文化的重要代表,是中国传统文化的重要组成部分。和田玉在古代又称昆仑玉,主要来源于昆仑山脉中,和田

    生活 2021年10月26日
  • 怎么进行-2018-4990漏洞调试的分析

    技术怎么进行-2018-4990漏洞调试的分析这篇文章给大家介绍怎么进行-2018-4990漏洞调试的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。测试环境Windows 7 SP1 x86Ad

    攻略 2021年11月25日
  • spring boot动态生成接口怎么实现

    技术spring boot动态生成接口怎么实现本篇内容主要讲解“spring boot动态生成接口怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring boot

    攻略 2021年11月29日
  • 连接到LilyPad的Windows平台的驱动程序是什么?

    技术连接LilyPad之Windows平台的驱动是什么这篇文章主要介绍了连接LilyPad之Windows平台的驱动是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家

    2021年12月21日