中国计量大学现代科技学院第四届“中竞杯”程序设计校赛(同步赛)F.爬塔

题目链接

题目描述

高川最喜欢的游戏当属 Slay the Spire,这是一款爬塔游戏,你需要从一座塔的底部一直爬到顶部,在爬塔的过程中,塔的每一层都有许多的宝物等你来拿。

高川从塔的左侧开始攀爬,从底部爬到顶部,再从右侧从顶部逐步下到底部。塔总共有 n 层,每一层都有很多宝物从左到右排列。在左侧攀爬时,他只能从每层的最左边按顺序取宝物,在右侧下降时,他只能从每层的最右边按顺序取宝物。每个宝物都有一个价值,他最多拿 m 个宝物,他想知道自己从塔上下来时,最多可以拿的宝物价值和是多少。

输入描述:

第一行输入两个正整数 n\mathit nn 和 m\mathit mm 。表示塔的层数和最多能选的个数。

接下来 nnn 行,每行先输入一个数字 xxx。表示这一层宝物的个数。接下来输入 xxx 个正整数,表示每个宝物的权重 ccc。

1≤n,x,c≤1001\leq n,x,c \leq 1001≤n,x,c≤100

1≤m≤100001 \leq m \leq 100001≤m≤10000
输入保证可挑选的物品大于等于 mmm 个.

输出描述:

输出一个整数表示高川能拿走的最大价值和.

示例1

输入

2 3
2 3 2
4 1 4 1 5

输出

10

这题是典型的背包 DP,首先可以预处理每一行的前缀和,我们设两个状态数组 d[i][j]d[i][j]d[i][j] 和 dp[i][j]dp[i][j]dp[i][j],d[i][j]d[i][j]d[i][j] 表示第 iii 行选 jjj 个元素的最大值,可以直接通过暴力求,dp[i][j]dp[i][j]dp[i][j] 表示从第 111 行到第 iii 行一共选 jjj 个元素的最大值,显然 dp[n][m]dp[n][m]dp[n][m] 就是答案,那么我们只要求一个状态转移方程方程即可,这就是典型的背包 DP,若第 iii 行一共要选 jjj 个数,对第 i−1i-1i−1 行的 kkk 个数可选可不选,那么状态转移方程就是:
dp[i][j]=max(dp[i][j],dp[i−1][j−k]+d[i][k])dp[i][j]=max(dp[i][j],dp[i-1][j-k]+d[i][k])dp[i][j]=max(dp[i][j],dp[i−1][j−k]+d[i][k])
AC代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,c,x[200],num[200],sum[200][200],d[200][200],dp[200][100005];
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>x[i];num[i]=num[i-1]+x[i];for(int j=1;j<=x[i];j++){scanf("%d",&c);sum[i][j]=sum[i][j-1]+c;}}for(int i=1;i<=n;i++){for(int j=0;j<=x[i];j++){for(int k=0;k<=j;k++){d[i][j]=max(d[i][j],sum[i][k]+sum[i][x[i]]-sum[i][x[i]-(j-k)]);}}}for(int i=1;i<=n;i++){for(int j=0;j<=num[i];j++){for(int k=0;k<=min(j,x[i]);k++){dp[i][j]=max(dp[i][j],dp[i-1][j-k]+d[i][k]);}}}cout<<dp[n][m];return 0;
}

中国计量大学现代科技学院第四届“中竞杯”程序设计校赛(同步赛)F.爬塔相关推荐

  1. 中国计量大学现代科技学院第四届“中竞杯”程序设计校赛(同步赛) F.爬塔(DP)

    题目链接:https://ac.nowcoder.com/acm/contest/9680/F 题目描述: 高川最喜欢的游戏当属 Slay the Spire,这是一款爬塔游戏,你需要从一座塔的底部一 ...

  2. 网络优化(中国计量大学现代科技学院第三届“中竞杯”程序设计校赛(网络赛))

    题意: <梦三国2>是一款3D MOBA类网游.游戏继承<梦三国>的三国文化背景和基础玩法,并加入许多全新地图和全新竞技玩法.由于人气高,游戏在线人数与日俱增,我们知道当在线人 ...

  3. 中国石油大学(北京)第三届“骏码杯”程序设计竞赛(同步赛)——C 小菲爱数数

    题目链接:C-小菲爱数数_中国石油大学(北京)第三届"骏码杯"程序设计竞赛(同步赛) (nowcoder.com) 思路好像和题解不一样,但是a了. 主要思路:首先肯定是要先把素数 ...

  4. 浙江农林大学2021年新生杯程序设计竞赛(同步赛)

    未来是你们的 #include <iostream> using namespace std;int main() {printf(R"(14 ChenMingjian Bron ...

  5. 大学各专业计算机专属表情包,萌翻!中国计量大学女生给7个高校做了专属表情包...

    前两天,"给好朋友P图"上了热搜,好多人会拿着好友的照片修图.这不,中国计量大学的一名学生非常有爱,她不但给自己学校做了表情包,还给周边相邻的6所高校都做了表情包. 这套表情包简直 ...

  6. 中国计量大学计算机专业在哪个校区,2021年中国计量大学有几个校区,大一新生在哪个校区...

    很多中国计量大学新生报到之前都有很多疑问,其中一个疑问就是中国计量大学有几个校区,大一新生在哪个校区.本文主要为大家介绍关于2020年中国计量大学的介绍,中国计量大学招生各个专业目录.中国计量大学新生 ...

  7. 携手并进,利尔达科技集团与中国计量大学举办捐赠签约仪式

    近日,利尔达科技集团与中国计量大学捐赠签约仪式在杭州下沙顺利举行.利尔达科技集团将向中国计量大学捐赠10万元,用于机电工程学院求是电子科技协会的学科建设和优秀学生培养. 利尔达科技集团运营副总裁孙瑶. ...

  8. 中国计量大学调剂计算机技术,2020年中国计量大学硕士研究生招生调剂公告

    一.调剂分数线: 详见<中国计量大学2020年硕士研究生招生复试分数线>. 二.调剂程序: 1.第一阶段:登陆我校"研究生招生信息系统"网址https://yjsb.c ...

  9. 中国计量大学调剂计算机技术,2018年中国计量大学考研调剂程序

    2018考研复试交流群(进群领内部资料) 576433840 2018年中国计量大学考研调剂程序 2018年考研成绩查询接近尾声,部分成绩不太理想的考生可能会考虑考研调剂,为了方便考生,中公考研小编为 ...

最新文章

  1. 心电图心电轴怎么计算_浅谈心电图
  2. 谈一谈并查集QAQ(上)
  3. ext 解析后台返回response.responseText中的数据
  4. 移动商城html 源码,基于weui的移动商城html5模板
  5. 一般微型计算机有几十条,计算机单选题.doc
  6. 不知道从哪里开始更新你的秋季海报设计?
  7. readline库实现命令行自动补全
  8. Python中文编码过程中遇到的一些问题
  9. Hibernate4实战   之   第五部分:Hibernate的事务和并发
  10. 马云正式辞职,那么天才郭盛华到底在追求什么呢?
  11. php excel自适应列宽,PHPExcel自动调整列宽
  12. 网站服务器如何直接播放视频,视频放服务器链接直接播放
  13. 非洲做项目的务实与务虚
  14. Shell脚本工具三剑客 Sed
  15. 如何用微信公众号二维码事件做扫码登陆
  16. 程序的本质之一程序编译的详细过程
  17. SpringBoot中重试框架——Spring-retry与Guava-Retry
  18. Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)
  19. python数据分析实训心得_Python代码在实践过程中的经验总结
  20. 地理信息科学与计算机科学与技术专业,浙江大学地理信息科学专业怎么样

热门文章

  1. 计算机一级插入页码,计算机一级WPS考试:WPS文字中页码插入及排版技巧
  2. html中table整体缩小,html-如何缩小表格样式中的间隙?
  3. background图片叠加_java实现图片的叠加效果
  4. PSO算法求解全局最大值
  5. 基于Redis的限流器的实现
  6. python栈是什么意思_Python实现的栈(Stack)
  7. 我们这么努力到底为了什么
  8. 智合同丨企业数智化转型,AI技术起到了什么作用?
  9. 手机怎样转换php格式,手机视频格式转换方法适合所有手机视频格式转换|如何转换手机视频格式...
  10. 开箱即用,Hexo博客的github+server自动部署