来源:牛客网:

Max Power

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

小卤蛋刚把dnf的技能点重新洗了一遍,现在他要重新加点,假设他的技能树一共有n层,第i层有n-i+1个
技能,每个技能只能够学习一次。除了第1层的技能可以直接学习外,其他技能学习都要学习前置技能,
即你要学习第i(i>=2)层第j列的技能,那么你要先学习第i-1层的第j列和第j+1列的技能。每个技能学习 后都会获得一定的战力加成。
现在小卤蛋有m个技能点,一个技能点可以学习一个技能,他想知道加完点后他可以获得的最大战力加成为多少。

输入描述:
有多组样例输入,输入到文件结束.
每组样例第一行输入2个整数n(1<=n<=50)和m(1<=m<=1300),对应题目上的含义。
接下来共有n行,第i行有n-i+1个数,代表这个技能学习后获得的战力加成(战力加成<=1000)。
输出描述:
输出最大的战力加成。
示例1
输入
复制

4 3
1 4 1 9
2 3 5
6 1
66

输出
复制

15

题解:

我们可以看出这是个倒三角的形状。要学技能x,就要学习它上面的两个技能,这两个技能上面的三个技能,一直推到第一层,这就是一个倒三角形状,也就是倒三角的内容我没必须全部学习。
我们从列的方向看,会发现每一列所学的技能是一个从上往下的一个连续区间,(中间若有断开则最底下的技能将无法学习)。其次,左一列总比右一列多学一个(如下)
所以我们就从右向左一列一列的转移
dp[i][j][k]表示前i列一共选了k个技能学习,第i列选了连续的前j个
dp[i][j][k]=max(dp[i-1][p][k-j]+sum[i][j])
保证倒三角内技能全部学习
其中:
sum[i][j]是列的前缀和,表示第i列前j个数字的和
p>=j-1,从j-1枚举到n-i+1枚举,
即第i-1列最少只比第i列少选一个(最多则可以选完)。
最后每个位置的dp[i][j][m]最大值为答案

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=55;
int sum[maxn][maxn];
int dp[maxn][maxn][1308];
int a[maxn];
int main()
{int n,m;while(cin>>n>>m){for(int i=1;i<=n;i++){a[i]=a[i-1]+i;for(int j=1;j<=n-i+1;j++){int x;cin>>x;sum[i][j]=x+sum[i-1][j];}}memset(dp,0,sizeof(dp));int sun=0;for(int i=n;i;i--){for(int j=0;j<=n-i+1;j++){for(int k=a[j];k<=m;k++){for(int p=max(j-1,0);p<n-i+1;p++){dp[i][j][k] = max(dp[i][j][k], dp[i + 1][p][k - j] + sum[j][i]);}sun = max(sun, dp[i][j][m]);}}}cout<<sun<<endl;}
}

牛客网【每日一题】7月29日题目精讲—Max Power相关推荐

  1. 牛客网 每日一题 7月23日题目精讲—wpy的请求

    来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...

  2. 牛客网【每日一题】4月29日题目精讲 Symmetric Matrix

    链接: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 输入描述: The input ...

  3. 【牛客每日一题】tokitsukaze and Soldier 题目精讲 贪心、优先队列、堆

    链接:https://ac.nowcoder.com/acm/problem/50439 来源:牛客网 ACM在线模板 今天才发现牛客推出了一个每日一题的版块,3月25号就开始了,今天才发现,赶紧补救 ...

  4. 【每日一题】8月28日题目精讲 编号

    [每日一题]8月28日题目精讲 编号 链接:https://ac.nowcoder.com/acm/problem/19925 来源:牛客网 题目描述 你需要给一批商品编号,其中每个编号都是一个7位1 ...

  5. 【每日一题】7月17日题目精讲—BOWL 碗的叠放

    [每日一题]7月17日题目精讲-BOWL 碗的叠放 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld ...

  6. 【每日一题】7月15日题目精讲—生日快乐

    [每日一题]7月15日题目精讲-生日快乐 [SCOI2009]生日快乐 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO For ...

  7. 【每日一题】7月13日题目精讲—Kingdom

    [每日一题]7月13日题目精讲-Kingdom 文章目录 题目描述 题解: 代码: 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 1048576K,其他语言2097152K 64bi ...

  8. 牛客网【每日一题】4月14日题目精讲 Xorto

    文章目录 题目描述 题解: 代码: 扩展 传送 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format:%lld 题目描述 ...

  9. 牛客网 【每日一题】8月5日题目精讲—蓝魔法师

    来源:牛客网: 文章目录 题目描述 题解: 代码: 题目描述 "你,你认错人了.我真的,真的不是食人魔."–蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于 ...

最新文章

  1. serverlet 区别_Servlet中/和/*的区别
  2. Ubuntu 20.04 LTS安装搜狗输入法,只需三条命令,还能自动更新
  3. 优先级调度算法(C++实现)
  4. Matlab变量、分支语句和循环语句
  5. 物联网通信协议_自动化机器上的物联网网关的目的是什么?
  6. 0与1世界的初级编程篇之C语言
  7. 一文读懂机器学习库graphLab
  8. 计算机主机接线视频教程,电脑主板跳线怎么接?电脑机箱与主板跳线接法图解教程...
  9. UVA 10391 - Compound Words
  10. C# Out 传值
  11. Thinkpad SL-400 XP驱动下载与安装方法
  12. 利用FbinstTool制作多系统(winPE+Ubuntu+CDLinux)启动U盘
  13. 3个方法解决百度网盘限速(转)
  14. Word2Vec模型之实现篇
  15. WIN10防火墙端口添加例外
  16. linux trace 进程 文件路径,linux panic 问题定位
  17. python 学术论文,python论文_python 论文_python
  18. Visual Studio(VS) Code详解
  19. 《集成电路先进光刻技术与版图设计优化》课程分享之二:浸没式光刻工艺缺陷种类、特征及自识别方法
  20. python保存plot图片_Matplotlib savefig只保存图像,不保存行

热门文章

  1. 轮子,辛苦你了。 | 今日最佳
  2. 16个让你烧脑让你晕的悖论
  3. 5月份Github上最热门的数据科学和机器学习项目
  4. 接地脚是什么意思_帮个忙老铁们 急急急!!!什么叫相地接错并缺地。?_天涯问答_天涯社区...
  5. 六元均匀直线阵的各元间距为_实验二 均匀直线阵
  6. 计算机软件在矿井地质中的应用,(完整版)遥感导论知识点整理(梅安新版)
  7. css 旋转45_CSS教程——第14期
  8. [RabbitMQ]什么是MQ
  9. IDEA如何在包下建立子包
  10. [JS-BOM]BOM_History历史记录对象