关闭

hdu 4939

标签: hdu
764人阅读 评论(0) 收藏 举报
分类:

题意:

长度为n个单位的map,每个单位需要时间t来走完。

每个单位可以放置一个塔。一共有三种塔,每种塔的作用不同:

1.只能攻击当前单位,每秒x点伤害(红塔)

2.攻击当前单位之后的所有单位,每秒y点伤害(绿塔)

3.使目标经过本单位之后减速,之后每单位需要的时间+z(蓝塔)

问目标受到的最多的攻击是多少

思路:

首先明确,1塔只能放在最后才最优。

然后就是解决前面的塔放2还是放3.。。。

我刚开始是按直接贪心做的...并不对....

然后按照DP来考虑,可是定义的状态不太好,导致处理问题的角度并不对...超时T_T。。

但是这道题目很简单呀~~

只不过当时脑子就是没能想起来 这样 定义状态...


其实定义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...

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

android自动化测试中hierarchyviewer和uiautomatorviewer获取控件信息的方式比对(2)

在上一篇我简单的了解了一下hierarchyviewer和uiautomatorviewer,如需访问,转以下连接: android自动化测试中hierarchyviewer和uiautomatorv...
  • qhshiniba
  • qhshiniba
  • 2014-03-22 14:41
  • 11578

【并查集专题】【HDU】

How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
  • zy691357966
  • zy691357966
  • 2014-11-29 18:34
  • 1932

hdu5444 Elven Postman(二叉树遍历)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5444 题目大意:给出一颗二叉树的先序遍历,默认的中序遍历是1.、2、……n。给出q个询问,询...
  • aaaaacmer
  • aaaaacmer
  • 2015-09-14 17:00
  • 1256

hdu 4939 Stupid Tower Defense(DP)2014多校训练第7场

Stupid Tower Defense                                     ...
  • LYHVOYAGE
  • LYHVOYAGE
  • 2014-08-13 08:54
  • 2084

HDU_4939_Stupid Tower Dfense_DP

想了想,人生真是艰难啊。 题意: 一个ta fa
  • u014610925
  • u014610925
  • 2014-08-12 19:16
  • 187

hdu 4939 Stupid Tower Defense dp

Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java...
  • u011645923
  • u011645923
  • 2014-08-12 20:46
  • 605

HDU 4939 Stupid Tower Defense

dp
  • sky_miange
  • sky_miange
  • 2015-11-20 23:18
  • 214

HDU4939Stupid Tower Defense (有思想的dp)

Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot...
  • u010372095
  • u010372095
  • 2014-09-18 23:30
  • 1905

hdu 4939 Stupid Tower Defense() dp

Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java...
  • cokomowang
  • cokomowang
  • 2014-08-15 10:48
  • 233

HDU 4939 一个塔防游戏

Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java...
  • hitwhacmer1
  • hitwhacmer1
  • 2014-08-12 21:41
  • 286
    个人资料
    • 访问:137664次
    • 积分:3140
    • 等级:
    • 排名:第12710名
    • 原创:175篇
    • 转载:6篇
    • 译文:9篇
    • 评论:13条
    博客专栏