hdu 4939
题意:
长度为n个单位的map,每一个单位须要时间t来走完。
每一个单位能够放置一个塔。一共同拥有三种塔,每种塔的作用不同:
1.仅仅能攻击当前单位。每秒x点伤害(红塔)
2.攻击当前单位之后的全部单位,每秒y点伤害(绿塔)
3.使目标经过本单位之后减速,之后每单位须要的时间+z(蓝塔)
问目标受到的最多的攻击是多少
思路:
首先明白,1塔仅仅能放在最后才最优。
然后就是解决前面的塔放2还是放3.。
。
。
我刚開始是按直接贪心做的...并不正确....
然后依照DP来考虑。但是定义的状态不太好。导致处理问题的角度并不正确...超时T_T。
。
可是这道题目非常easy呀~~
仅仅只是当时脑子就是没能想起来 这样 定义状态...
事实上定义d[i][j] 表示前i个单位中放置了j个第三种塔。。。
然后默认i+1~n放置的都是红塔(由于红塔一定是放置在最后的)..然后非常明显就放置了i-j个绿塔。。。
然后d[i][j]事实上表示是在这个状态(默认i之后的都是红塔,仅仅考虑前i个)下,仅仅放置蓝塔和绿塔时~最优的情况下前i个会得到多少伤害值.....然后再加上后面的红塔伤害就好了。。
。
注意那种n个单位所有放红塔的情况要考虑在内...不然wa到T_T。。
。
code:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 1505; long long n,x,y,z,t;
long long f[maxn][maxn]; void solve(){
memset(f, 0, sizeof(f));
long long ans = n * x * t;
for(int i = 1; i <= n; i++){
for(int j = 0; j <= i; j++){
f[i][j] = f[i-1][j] + (i-1-j)*(j*z+t)*y;
if(j > 0) f[i][j] = max(f[i][j], f[i-1][j-1] + (i-j)*((j-1)*z+t)*y);
ans = max(ans, f[i][j]+(i-j)*y*(n-i)*(j*z+t) + x * (n-i) * (j*z+t));
}
}
cout << ans << endl;
}
int main(){
int tt;
int cas = 0;
scanf("%d",&tt);
while(tt--){
cin >> n >> x >> y >> z >> t;
printf("Case #%d: ",++cas);
solve();
}
return 0;
}
sigh....这种题目也做不出来真是水成了冰渣渣orz...
hdu 4939的更多相关文章
- HDU 4939 Stupid Tower Defense(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4939 解题报告:一条长度为n的线路,路上的每个单元格可以部署三种塔来给走在这条路上的敌人造成伤害,第一 ...
- hdu 4939 三色塔防
http://acm.hdu.edu.cn/showproblem.php?pid=4939 给出一条长为n个单位长度的直线,每通过一个单位长度需要 t 秒. 有3种塔,红塔可以在当前格子每秒造成 x ...
- dp --- hdu 4939 : Stupid Tower Defense
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- HDU 4939 Stupid Tower Defense (2014 Multi-University Training Contest 7)
思路:首先红色肯定要放在最后面.前面蓝色和绿色dp求解. dp[i][j] 表示前面(i+j) 个 有 i 个蓝色塔 j个绿色塔 能造成最大伤害. //====================== ...
- 2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)
题目链接 题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔: 红塔 :经过该塔所在单位时,每秒会受到x点伤害. 绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害 ...
- hdu 4939 Stupid Tower Defense ( dp )
题目链接 题意:给出一条长为n个单位长度的直线,每通过一个单位长度需要t秒. 有3种塔,红塔可以在当前格子每秒造成x点伤害,绿塔可以在之后的格子每秒造成y点伤害, 蓝塔可以使通过单位长度的时间增加z秒 ...
- HDU 4939 Stupid Tower Defense
dp:枚举red,dp前i 个塔中有j 个蓝塔的最大伤害. 机智的地方:dp前i 个塔的时候可以同时处理n-i 个红塔,这样就少了个循环...(枚举红塔的循环) #include <iostre ...
- hdu 4939 2014 Multi-University Training Contest 7 1005
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- HDU 4939 Stupid Tower Defense 简单DP
题意: 地图为长为n个单位长度的直线,每通过一个单位长度需要t秒. 有3种塔,红塔可以在当前格子每秒造成x点伤害,绿塔可以在之后格子造成y点伤害,蓝塔可以使通过单位长度的时间增加z秒. 让你安排塔的排 ...
随机推荐
- [MYSQL] 记一次MySQL性能调优
最近在做数据迁移工作,已有一堆数据文件,要把这些数据文件写到MySQL 数据库里面去. MySQL数据库上架了一层服务接口,可以直接调用.博主写了一个迁移程序,放在服务器A上. *********** ...
- An explicit value for the identity column in table can only be specified when a column list is used and IDENTITY_INSERT is ON
If you run into the following error message: An explicit value for the identity column in table '< ...
- 新一代的昆明网络seo优化技巧
一年一度的双11又即将到来,今天选择在双11这天新注册了一个博客园,第一篇文章,我决定来谈一谈现在的网络SEO. 起首咱们来熟悉下SEO是什么,SEO全名叫Search Engine Optimiza ...
- C#对话框的使用
[函数] <整型> MessageBox(<字符串> Text, <字符串> Title, <整型> nType,MessageBoxIcon);[函数 ...
- js基础01
常见的五大浏览器:chrome firfox ie opera safari 浏览器的解析器会把代码解析成用户所能看到的东西 www.2cto.com/kf/201202/118111.html浏览器 ...
- Eclipse中启动tomcat从console跳回servers
- [转载] MapReduce工作原理讲解
转载自http://www.aboutyun.com/thread-6723-1-1.html 有时候我们在用,但是却不知道为什么.就像苹果砸到我们头上,这或许已经是很自然的事情了,但是牛顿却发现了地 ...
- Python和Excel交互
Python和Excel交互 使用的python包为XlsxWriter 下载的链接 https://pypi.python.org/pypi/XlsxWriter 初级的例子: def write_ ...
- 使用Dropwizard(2)-配置分类ConfiguredBundle
前言 不可避免的要用dropwizard作为service框架.持续学习.上次在dropwizard中使用feign,使用hystrix, 算是基本入门了.接下来就是基于此的优化. 把需要使用Conf ...
- linux平台搭建postfix邮件服务器
一,搭建邮件服务器前准备如下: Centos 7.2 64位Postfix-2.8.12.tar.gz Postfix MTA(邮件传输代理)Dovecot-2.1.8.tar.gz IMAP 和 P ...