洛谷 P1728 高手玩电竞

25 篇文章 0 订阅

洛谷 P1728 高手玩电竞


题目

题目背景

高手在一年级、找不到可以怎么样来鄙视小盆友以获得女神的欢心,于是他决定玩电竞来藐视那些连开机都不知道要按哪里的小盆友。他玩的游戏叫“minecraft”,其中一个核心的内容是给技能加点(minecraft要加点?),他找到你,并答应如果自己追到了女神,他就请你去他家吃饭,油炸苹果、香辣梨子、水煮活鸟什么的随你选。他想要技能达到最大威力值。

题目描述

这是一个技能树(或者科技树).格子上的数,是威力值.要先学会第一排第二个和第三个,才能学会第二排的第二个.每个技能学习的前提都是左上和右上的两个技能.假设现在有一个第一层有N个技能的技能树,而且技能点是有限的,只能学习M个技能,我们想知道最大的威力值之和是多少.

输入输出格式

输入格式:
第一行两个数N和M,如题所述

之后N行,第i行,有n+1-i个数.表示一个技能树.

输出格式:
输出一个数,表示最大威力值之和

输入输出样例

输入样例#1:

4 5
1 1 1 1
1 2 1
1 1
1

输出样例#1:

6

说明

对于40%的数据,N<=10

对于100%的数据,N<=50,M<=500,所有数据都在longint之内.


题解

首先,把三角形倒过来看

1 2 3 4     4
2 3 4       3 4
3 4     ==> 2 3 4      (这里的数字是表示状态类型)
4           1 2 3 4

很显然,我们在取左边的某个状态类型 i 的数字时候,该数下方的数以及右边一列中与它状态类型相同的那个数字也一定被取过

而右边的那个数在三角形中的位置就是当前所要取得数字的位置向下移一格后再向右左移一格

那么,我们只要从右往左枚举列 i,以及该列上取到高度 j ,那么很显然左边一列取到的高度 h 必须满足 0hj+1 ,然后我们就可写一个 DP

f[i][j][k] 表示第 i 列,从下往上取 j 个数字,总共取了 k 个数字

转移方程: f[i][t][k]=max(f[i+1][j][kt]+sum[i][t],f[i][t][k])0tj+1sum[i][t]是第 i 列向上取 t 个数的和

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值