题目描述 Description

塔防游戏(Tower Defence)是dd_engi非常喜爱的一类休闲游戏。在这类游戏中,玩家需要在地图上摆放各种防御单位,打击并阻止试图跨越地图的敌对单位。一般而言,敌对单位不会攻击防御单位,但若敌对单位未被防御单位消灭且成功跨越地图,玩家的生命数会减少。
dd_engi设计出了一种一维的塔防游戏,并将其命名为“魔法塔防”,规则如下:
游戏的地图是一行 N N N个连续的魔法塔,其中行的一端是入口,另一端是出口,怪兽会从地图的一端向另一端移动。初始时,怪兽通过每个魔法塔的时间是 T T T秒。玩家可以在这 N N N个魔法塔中放置魔法师以对经过的怪兽造成伤害,每个魔法塔中最多放置一个魔法师,且放置好的魔法师不能改变位置。
共有三种不同属性的魔法师,分别是红色魔法师、蓝色魔法师和绿色魔法师,作用分别是攻击、减速以及下毒。当怪兽经过一个红色魔法师所在的魔法塔时,每秒钟生命值会减少 R R R点;当怪兽从一个蓝色魔法师所在的魔法塔走出之后,通过每个魔法塔的时间延长 B B B秒;当怪兽从一个绿色魔法师所在的魔法塔走出之后,每秒钟会因中毒失去 G G G点生命值。蓝色魔法师的减速效果和绿色魔法师的下毒效果是可以累加的。也就是说,怪兽通过 n n n个蓝色魔法师所在的魔法塔之后,它通过每个魔法塔的时间会变成 T + B T+B T+B× n n n秒;怪兽通过 n n n个绿色魔法师所在的魔法塔之后,它每秒钟会因中毒失去 G G G× n n n点生命值。
现在,你的任务是,在这 N N N个魔法塔里放置各种类型的魔法师,使通过的怪兽失去的生命值最大。输出这个最大值。

输入 Input

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

输出 Output

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

样例输入 Sample Input

5 4 3 2 1

样例输出 Sample Output

82

限制 Limits

数据范围
20 % 20\% 20%的数据满足 N ≤ 12 N≤12 N≤12。
50 % 50\% 50%的数据满足 N ≤ 100 N≤100 N≤100。
100 % 100\% 100%的数据满足 1 ≤ N ≤ 1024 ; 0 ≤ R , G , B ≤ 65536 ; 0 ≤ T ≤ 3 1≤N≤1024; 0 ≤ R, G, B ≤65536; 0 ≤ T ≤ 3 1≤N≤1024;0≤R,G,B≤65536;0≤T≤3。
Time Limit : 1 s 1s 1s & Memory Limit : 128 M B 128MB 128MB

看题,还是没思路
要维护三个状态的话, n 3 n^3 n3继续超时
要维护两个的话,维护哪两个?
随便两个?肯定不行,准确性呢?
于是爆零…
首先做这道题得会玩塔防游戏(据说我只玩的PvZ是塔防?)
蓝法师(就是冰法师)和绿法师(毒法师)是加Buff的(自带延长效果,类比寒冰射手,只是僵尸再也不会回原来状态了),绝对要放到前面(为啥?孩子不要沉迷于学习…),红法师(火法师)放在最后(gank掉剩下的血)。
ang?这不是贪心吗…
贪心优化的DP…
既然是要冰法师和毒法师放前面,维护的两个状态就是这两个,火法师做差求出
代码应该还很好懂吧…

#include <cstdio>
#define MAXN 1025
using namespace std;long long dp[MAXN][MAXN];
long long ans;
long long n,r,g,b,t;long long mymax(long long a,long long b)
{return a>b?a:b;
}int main()
{scanf("%lld %lld %lld %lld %lld",&n,&r,&g,&b,&t);for (int i=0;i<=n;i++) //i为总共放置蓝法师塔数for (int j=0;j<=n-i;j++) //j为总共放置绿法师塔数{if (i) //你得先有蓝法师dp[i][j]=mymax(dp[i][j],dp[i-1][j]+g*j*(t+b*(i-1))); //只有走出塔才生效,i或j需要减1if (j) //同理dp[i][j]=mymax(dp[i][j],dp[i][j-1]+g*(j-1)*(t+b*i));ans=mymax(ans,dp[i][j]+(n-i-j)*(g*j+r)*(t+i*b));//小小的运用了一下结合律}printf("%lld\n",ans);return 0;
}

学好OI,你得先打好游戏…

[DP] [贪心] [Vijos P1417] 魔法塔防 (mtower)相关推荐

  1. 塔防游戏的路径寻找算法分析

    在塔防游戏中,有很多敌人都是向着同一目标前进的.在众多塔防游戏当中,有一条或几条预定好的路径.在一些塔防游戏中,比如经典的<Desktop Tower Defense>,你可以将塔放在地图 ...

  2. GemCraft Labyrinth:超耐玩的在线flash塔防游戏

    GemCraft Labyrinth是一个在线flash塔防游戏,中文名字可以理解为宝石塔防.这个游戏拥有众多的关卡(169关),所以和植物大战僵尸一样十分的耐玩,除此之外,独特的宝石合成模式.技能点 ...

  3. 《王者圣域》2.23上线链游玩家|放置塔防、趣味竞技

    导语:王者圣域游戏是一款画风萌动的卡牌对战手游,集合了塔防对战模式和趣味的闯关内容让玩家畅享全新的冒险之旅,趣味十足的竞技场对战和丰富的战斗模式等待玩家自由体验,多样的英雄等待玩家自由选择,搭配强大的 ...

  4. 远古守卫/cocos2d-x 源码/塔防游戏/高仿王国保卫战

    下载地址:下载地址 本源码高度模仿IOS游戏王国保卫战,由国外IOS商业开发教程网站raywenderlich内部工程师制作,有非常完整的关卡设计,战斗流程,长达12个关卡,各种敌兵,怪物,箭塔,炮塔 ...

  5. unity塔防游戏怪物转向_怪兽塔防手机版下载-怪兽塔防游戏下载v1.4 安卓版

    怪兽塔防,融入大量呆萌怪物玩法的经典塔防手游,游戏中玩家需要不断应对来袭的敌人,游戏中玩家需要在关卡中放置武器进行防御,游戏十分考验玩家的反应力与应变能力,游戏玩法挑战性十足,感兴趣的玩家可以下载体验 ...

  6. unity塔防游戏怪物转向_皇家冲冲冲游戏下载-皇家冲冲冲游戏安卓版 v1.0.2090

    皇家冲冲冲游戏是一款守护基地.消灭怪物的单机卡牌游戏,采用塔防闯关地图,每个关卡任务都有全新的挑战,玩家轻松召唤卡牌英雄,随心放置组队,使用不一样的策略轻松消灭史诗级怪物,英雄单个作战能力不突出,但组 ...

  7. 远古守卫/cocos2d-x 源代码/塔防游戏/高仿王国保卫战

    下载地址:下载地址 本源代码高度模仿IOS游戏王国保卫战,由国外IOS商业开发教程站点raywenderlich内部project师制作,有很完整的关卡设计,战斗流程,长达12个关卡,各种敌兵,怪物, ...

  8. 算法:塔防游戏中的路径寻找

    在塔防游戏中,有许多敌人向着同一目标前进.在很多塔防游戏当中,有一条或几条事先预定好的路径.在一些中,比如经典的<Desktop Tower Defense>,你可以将塔放在任何位置,它们 ...

  9. python 玩公众号游戏_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...

    我一直认为,在python入门阶段学习基础理论,太枯燥.所以我们整理了很多有关python的项目案例,有详细教程还有源码,希望能帮助更多对python感兴趣的人. 这是其中一个适合入门的Python项 ...

最新文章

  1. 如何 SQL Server 2005 实例之间传输登录和密码
  2. C语言--static全局使用示例
  3. vue main.js 导入文件报错Module build failed: Error: No PostCSS Config found in:
  4. Windows驱动开发学习笔记(四)—— 3环与0环通信(常规方式)
  5. bootstrapV5+(资源篇)
  6. dylib java_使用单声道可执行文件捆绑.dylib文件
  7. Hadoop介绍及最新稳定版Hadoop 2.4.1下载地址及单节点安装
  8. 用手机otg方式给U盘制作一个Win10PE启动U盘,手机加U盘协助电脑重装系统
  9. CMOS、TTL门电路基础
  10. java是要在安装的盆运行吗,Java程序员(单身30年):告诫各位,千万不要和女程序员做同事!...
  11. web项目no such method exception
  12. html知识点总结1
  13. SpringMvc接收请求
  14. iPhone 订阅退款方法
  15. Magento付款方式的判断
  16. Matlab之绘制三维曲面图
  17. 电子科技大学信息与通信工程学院858考研上岸经验分享(一)
  18. 蛙跳差分格式(非恒定流)
  19. 计算机语言学 pdf,语言学必读书目PDF版.doc
  20. 英语口语——情景话题类词汇汇总

热门文章

  1. 喜讯丨星舆科技连续四年入选“全国科技型中小企业”
  2. 上facebook安卓_如何在Facebook上保护您的隐私
  3. KB和KiB的区别是什么?
  4. 拍立淘---试妆魔镜 OpenGL ES 2.0 框架及性能优化
  5. 点击事件验证码不能实现刷新的问题
  6. 紧耦合和松耦合有什么区别
  7. 学习操作系统:进入保护模式,理解GDT(1):TEXT
  8. Python制作微信聊天机器人
  9. python 人工智能的开启
  10. 远程桌面提示无法连接远程计算机,win7系统远程连接提示“此计算机无法连接到远程计算机”的解决方法...