[HDOJ 4939] Stupid Tower Defense [动态规划]
来源:互联网 发布:人工智能对人类的危害 编辑:程序博客网 时间:2024/06/06 06:38
一条长度为n的直线上有n个塔,每个格一个。塔分为3种,一种会让怪在过了当前格之后每个格多停留一段时间,一种会在怪物在当前格时每秒造成伤害,一种会在怪物过了当前格之后每秒造成伤害。
首先我们可以知道,所有的在当前格造成伤害的塔都会放在最后。
然后对于另外两种塔,定义状态dp[i][j]为i个减速塔和j个攻击塔所能造成的最大伤害,则dp[i][j]可以由dp[i-1][j]和dp[i][j-1]转移过来。
#include <cstdio>long long dp[1501][1501];int n,x,y,z,t;inline long long max(const long long &x,const long long &y) {return x>y?x:y;}inline long long damage(int j) {return j*y;}inline long long time(int i) {return i*z+t;}int main() {int tt,cas,i,j;scanf("%d",&tt);for (cas=1;cas<=tt;cas++) {long long ans=0;scanf("%d%d%d%d%d",&n,&x,&y,&z,&t);for (i=0;i<=n;i++)for (j=0;i+j<=n;j++)dp[i][j]=0;for (i=0;i<n;i++) {for (j=0;i+j<n;j++) {long long tmp=dp[i][j]+damage(j)*time(i);dp[i+1][j]=max(dp[i+1][j],tmp);dp[i][j+1]=max(dp[i][j+1],tmp);}}for (i=0;i<=n;i++)for (j=0;i+j<=n;j++)ans=max(ans,dp[i][j]+(damage(j)+x)*time(i)*(n-i-j));printf("Case #%d: %lld\n",cas,ans);}return 0;}
0 0
- [HDOJ 4939] Stupid Tower Defense [动态规划]
- HDOJ 4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense(贪心+动态规划)
- 【DP】 HDOJ 4939 Stupid Tower Defense
- hdoj 4939 Stupid Tower Defense【dp】
- hdoj 4939 Stupid Tower Defense 【DP】
- HDOJ题目4939 Stupid Tower Defense(dp)
- HDU-4939-Stupid Tower Defense
- HDU - 4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense
- hdu 4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense
- hdu 4939 Stupid Tower Defense
- HDU-4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense
- HDU 4939 Stupid Tower Defense dp
- hdu 4939 Stupid Tower Defense(dp)
- (转载)纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)
- Communicating with Hardware 《LDD3 学习笔记》
- poj1151 & hdu1542 Atlantis(扫描线+离散化+线段树)
- 详解IOS开发应用之并发Dispatch Queues
- PHP单例模式
- [HDOJ 4939] Stupid Tower Defense [动态规划]
- Oracle 异常
- iOS面试题及答案
- 第五章基础题目选解之习题
- UVA - 331 Mapping the Swaps(回溯)
- hdu-oj 1282 回文数猜想
- hdu--4462
- 数据库设计原则(转载)
- 造成segment fault,产生core dump的可能原因