PID251 / 魔法塔防
题目描述

塔防游戏(Tower Defence)是dd_engi非常喜爱的一类休闲游戏。在这类游戏中,玩家需要在地图上摆放各种防御单位,打击并阻止试图跨越地图的敌对单位。一般而言,敌对单位不会攻击防御单位,但若敌对单位未被防御单位消灭且成功跨越地图,玩家的生命数会减少。

dd_engi设计出了一种一维的塔防游戏,并将其命名为“魔法塔防”,规则如下:

游戏的地图是一行N个连续的魔法塔,其中行的一端是入口,另一端是出口,怪兽会从地图的一端向另一端移动。初始时,怪兽通过每个魔法塔的时间是T秒。玩家可以在这N个魔法塔中放置魔法师以对经过的怪兽造成伤害,每个魔法塔中最多放置一个魔法师,且放置好的魔法师不能改变位置。

共有三种不同属性的魔法师,分别是红色魔法师、蓝色魔法师和绿色魔法师,作用分别是攻击、减速以及下毒。当怪兽经过一个红色魔法师所在的魔法塔时,每秒钟生命值会减少R点;当怪兽从一个蓝色魔法师所在的魔法塔走出之后,通过每个魔法塔的时间延长B秒;当怪兽从一个绿色魔法师所在的魔法塔走出之后,每秒钟会因中毒失去G点生命值。蓝色魔法师的减速效果和绿色魔法师的下毒效果是可以累加的。也就是说,怪兽通过n个蓝色魔法师所在的魔法塔之后,它通过每个魔法塔的时间会变成T+B*n秒;怪兽通过n个绿色魔法师所在的魔法塔之后,它每秒钟会因中毒失去G*n点生命值。

现在,你的任务是,在这N个魔法塔里放置各种类型的魔法师,使通过的怪兽失去的生命值最大。输出这个最大值。

数据范围

20%的数据满足N<=12。

50%的数据满足N<=100。

100%的数据满足1<=N<=1024; 0 <= R, G, B <= 65536; 0 <= T <= 3。

输入格式

一行,五个空格隔开的整数N、R、G、B、T。

输出格式

只需输出一行一个整数,即通过的怪兽失去的最大的生命值。

样例输入
样例输出
提交题目 Error [ 更改语言 ] Language
C C++ Pascal Python2
相关讨论
查看更多讨论
发布新讨论 讨论