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秒. 让你安排塔的排 ...
随机推荐
- C#里调用 MysqlDB
最近在做项目,发现在使用Mysql提供给C#操作的类不是和好用,就想办法写了一个操作方便的Mysql数据层类. 比如以前在执 行一个查询 代码 ...
- riot.js教程【四】Mixins、HTML内嵌表达式
前文回顾 riot.js教程[三]访问DOM元素.使用jquery.mount输入参数.riotjs标签的生命周期: riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法: riot.j ...
- Bean property属性说明
来自为知笔记(Wiz)
- 【机器学习】人工神经网络ANN
神经网络是从生物领域自然的鬼斧神工中学习智慧的一种应用.人工神经网络(ANN)的发展经历的了几次高潮低谷,如今,随着数据爆发.硬件计算能力暴增.深度学习算法的优化,我们迎来了又一次的ANN雄起时代,以 ...
- AIO5系统中-打印样式常见问题处理
1.为什么我的报表没有数据显示? 答:请看一下报表是否有绑定数据源,有添加查询,如果这些都做了,请看下主项数据的数据源有没有绑定,这些都绑定了,就会有数据的显示. 2.为什么我做的报表分组很乱? 答: ...
- cardview和Palette,ActionBar颜色随图改变
CardView是一个控件,Palette是取色工具(工具类),本文会对他们进行比较细致的介绍,相信机制的各位看完一定轻而易举地实现ActionBar随图改变的特效. 首先看一下效果图: Gradle ...
- 【SSM之旅】Spring+SpringMVC+MyBatis+Bootstrap整合基础篇(一)项目简介及技术选型相关介绍
试水 一直想去搭建个自己的个人博客,苦于自己的技术有限,然后也个人也比较懒散.想动而不能动,想动而懒得动,就这么一直拖到了现在.总觉得应该把这几年来的所学总结一番,这样才能有所成长. 不知在何时,那就 ...
- 【原创】通过搬瓦工vps搭建SS环境,供学习用
博主前段时间处于某些不可告人的目的,但又限于各类科学工具被禁的窘境,用搬瓦工的vps搭建了次SS环境,现在就来回顾并不知廉耻的传授下经验. 第一步:购买vps 1.登录官网 https://bwh1. ...
- C# 使用Task实现任务超时,多任务一起执行
简介:充分使用Task的异步功能代码实现:1.实现了任务超时 退出任务 2.多个任务一起执行 /// <summary> ///做事 需要 ms秒 才能完成 / ...
- 玲珑学院-ACM比赛1014 - Absolute Defeat
1014 - Absolute Defeat Time Limit:2s Memory Limit:64MByte Submissions:257Solved:73 DESCRIPTION Eric ...