给你一段长为n的路,每一个单位长度可以放一种塔,这里有三种塔。

红1)对正在经过这座塔的敌人进行 x 每秒伤害的攻击

绿2)对于已经经过这塔的敌人进行y每秒的伤害攻击

蓝3)对已经经过这个塔的敌人放慢速度,使得原先为 经过一个单位时间为  t的速度变为  t+z

对于红塔一定是放在最后面,然后对于前面的绿塔和蓝塔DP

dp[i][j]=Max(dp[i-1][j-1]+y*(i-j)*(t+(j-1)*z),dp[i-1][j]+y*(i-j-1)*(t+j*z));

前i个放j个蓝塔=Max((前i-1个放j-1个,当前放蓝塔所得到的伤害总和),(前i-1个放j个,当前放绿塔得到的伤害总和));

#include "stdio.h"
#include "string.h"
__int64 dp[1600][1600];
__int64 Max(__int64 a,__int64 b)
{if (a<b) return b;else return a;
}
int main()
{__int64 Case,ii,n,x,y,z,t,ans,i,j;scanf("%I64d",&Case);for (ii=1;ii<=Case;ii++){scanf("%I64d%I64d%I64d%I64d%I64d",&n,&x,&y,&z,&t);printf("Case #%I64d: ",ii);memset(dp,0,sizeof(dp));for (i=0;i<=n;i++) //前i个位置for (j=0;j<=i;j++) // 放j个蓝塔{if (j==0) dp[i][j]=dp[i-1][j]+y*(i-j-1)*(t+j*z);elsedp[i][j]=Max(dp[i-1][j-1]+y*(i-j)*(t+(j-1)*z),dp[i-1][j]+y*(i-j-1)*(t+j*z));if (dp[i][j]<0) dp[i][j]=0;}ans=0;for (i=0;i<=n;i++)for (j=0;j<=i;j++)ans=Max(ans,dp[i][j]+(n-i)*(t+j*z)*(x+y*(i-j)));printf("%I64d\n",ans);}return 0;
}

HDU 4939 DP相关推荐

  1. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  2. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  3. HDU 4832(DP+计数问题)

    HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...

  4. hdu 5086(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...

  5. hdu 2059(dp)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  6. HDU 3646 DP + 二分

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...

  7. Hdu 4293 DP

    题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...

  8. hdu 3905(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...

  9. hdu 4472 dp

    http://acm.hdu.edu.cn/showproblem.php?pid=4472 第一直觉找规律,第二直觉 把树拆成子树,然后递推或者DP 然后发现不行,然后才发现自己题都没读,,,, d ...

  10. hdu 1003 dp

    确实十分经典的一题,但我是参照dicuss 的题目做的,真是惭愧啊, 希望可以多接触些dp类型的题,提高自己水平 格外注意 sum 的代表含义, #include<iostream> #i ...

最新文章

  1. 关于API的设计和需求抽象
  2. [03] 为什么要使用异常机制
  3. C++ 类成员引用变量的使用
  4. Oracle_忘记密码
  5. 8年前端开发的知识点沉淀(不知道会多少字,一直写下去吧...)
  6. .net工具类 获取枚举类型的描述
  7. python-web自动化-元素定位
  8. 面对初学者的CAN总线入门教程(二)_CAN协议基本概念及其规格标准
  9. Utils 前端随机生成id,中文姓名
  10. jQuery 选择城市,显示对应的即时时区时间
  11. HDU 1429 bfs 状态压缩
  12. [.Net码农]RDLC报表中使用自定义函数
  13. 如何在C ++ 中分割PDF档案?试试Aspose
  14. 界面原型设计——在线教育app
  15. 修改Thinkphp-cmf上传视频大小限制
  16. 随笔 数据库敏感数据加密存储
  17. TYVJ账号大公布!
  18. java——百钱买百鸡
  19. 在ArcEngine中的点元素如何使用其本身提供的各种符号特征
  20. 150个常用的Linux命令汇总

热门文章

  1. codeforces topcoder 指南
  2. 给C盘减减肥,让你电脑飞一般速度
  3. Python心法:numpy命令关于axis=0,axis=1,axis=2
  4. Win2003可用序列号(标准版与企业版)
  5. 什么是大数据(转自知乎)
  6. 离线强化学习(Offline RL)系列1:离线强化学习原理入门
  7. oracle append parallel,oracle 优化之parallel和append
  8. 数学:AI和大数据的基础
  9. 55-硅谷课堂1(项目概述+MyBatisPlus使用+搭建项目环境+开发讲师管理接口)
  10. 2014腾讯校园招聘实习技术类笔试题目