#P7129. 「RdOI R1」冰淇淋游戏(play)
「RdOI R1」冰淇淋游戏(play)
题目背景
又有新游戏可玩啦!
题目描述
小 T 发现最近市面上出现了一款游戏,这款游戏分为 关,第 关玩一次需要 个体力,最多可以玩 次第 关。想玩第 关,必须先玩第 关至少一次,当然,玩第 关不需要这个先决条件。
游戏规则是这样的(对于第 关):
一共有 个冰淇淋排成一排,第 个冰淇淋的美味度为 ,每次你需要选择一个冰淇淋吃掉,共吃 次,在第 次吃第 个冰淇淋可以获得 分。
当然,要想吃冰淇淋可没有那么简单,你需要在第一次吃指定的第 个冰淇淋,接下来每次只能吃已经吃完的段的两边的冰淇淋,比如第一次吃的是第 个冰淇淋,第二次可以吃第 个或第 个(如果有的话)。
因为小 T 的脑子不太够计算这复杂的分数,所以他想求助你,在使用体力不超过 的情况下,最多可以获得多少分数。
输入格式
第一行有两个整数 ,分别表示关卡数和体力数。
接下来第 到第 行,第 行和第 行描述第 关。
第 行四个整数 ,意义见题面。
第 行 个整数,第 个为 ,意义见题面。
输出格式
一行一个整数,为使用体力不超过 的情况下的获得的分数的最大值。
2 20
9 1 4 2
3 2 4 1
11 2 4 3
2 3 2 2
48
3 20
9 2 1 1
10000
1 4 1 1
1
1 4 1 1
2
20003
提示
【样例解释】
样例1:
最优解为玩一次第一关再玩一次第二关。
第一关按照第 个的顺序吃冰淇淋,可以获得 $2\times 1+4\times 2+1\times 3+3\times 4=2+8+3+12=25$ 的分数。
第二关按照第 个的顺序吃冰淇淋,可以获得 的分数。
所以最多可以获得 的分数。
样例2:
最优解为玩两次第一关,一次第二关,一次第三关。
可以获得 的分数。
【数据范围】
对于 的数据,$1 \le n \le 10 , 1 \le k_i,m_i,s_i,y_{i,j} \le 100 , 1 \le t \le 100$。
对于另外 的数据,$1 \le n \le 100 , 1 \le k_i,m_i,s_i,y_{i,j} \le 100 , 1 \le t \le 10^4$。
对于 的数据,$1 \le n \le 200 , 1 \le k_i,m_i,s_i,y_{i,j} \le 500,1 \le t \le 10^5,1\le c_i\le k_i$。
【说明/提示】
- 尝试理解样例
【文件读入读出】(模拟,提交代码时不需使用)
- 文件名:
play.cpp
- 读入文件名:
play.in
- 读出文件名:
play.out