技能树
提交数: 34, 通过率: 0%, 平均分: 0
题目描述:
玩过 Diablo 的人对技能树一定是很熟悉的。一颗技能树的每个结点都是一项技能,要学会这项技能则需
要耗费一定的技能点数。只有在学会了某一项技能以后,才能继续学习它的后继技能。每项技能又有着不同的级
别,级别越高效果越好,而技能的升级也是需要耗费技能点数的。
有个玩家积攒了一定的技能点数,他想尽可能地利用这些技能点数来达到最好的效果,因此他给所有技能的
所有级别都打上了分,他认为效果越好的则分数越高。现在他要你帮忙寻找一个分配技能点数的方案,使得分数
总和最高。
输入格式:
第一行是一个整数 n(1<=n<=20),表示所有不同技能的总数。接下来依次给出了这 n 个不同技能的详细
描述。每个技能描述共包括 5 行,第一行是该技能的名称,第二行是该技能在技能树中的父技能的名称,为空
则表示该技能不需要任何的先修技能便能学习。第三行是一个整数 L(1<=L<=20),表示这项技能所拥有的最
高等级。第四行共有 L 个整数,其中第 i 个整数表示把这项技能从第 i-1 级升到第 i 级所需要的技能点数(0
级表示没有学习过)。第五行也包括了 L 个整数,其中第 i 个整数表示该玩家对这项技能的第 i 级的效果评分,
分数不超过 20。在技能描述之后是玩家所用角色的描述,共有两行。第一行是一个整数 P(0<=P<=100),表
示目前所拥有的技能点数。接下来一行是 n 个整数,依次表示角色当前所习得的技能级别, 0 表示尚未学习。这
里不会出现非法的情况,譬如在没有学习某项技能的时候已经习得了它的后继技能。
输出格式:
只需包括一个整数 S,表示你的技能点最佳分配方案所得到的分数总和。
样例输入:
3 Freezing Arrow Ice Arrow 3 3 3 3 15 4 6 Ice Arrow Cold Arrow 2 4 3 10 17 Cold Arrow 3 3 3 2 15 5 2 10 0 0 1
样例输出:
42时间限制: 1000ms
空间限制: 64MB