意思是有个塔防游戏,有三种塔,红塔在怪物经过的时候每秒会产生攻击力大小的伤害,绿塔对怪物经过以及经过之后每秒产生攻击力大小的伤害,还有种蓝塔,对怪物进行减速,即怪物从此之后经过一个单位都会减慢c秒

最后最最大的伤害值是多少

又是比赛的时候没想出来,知道是个DP,但是对这种多变量型的DP就是有点不感冒。这个思想其实也是差不多的,你首先得枚举其中的一个值或者两个值

这里有个特性,我绿塔和蓝塔放越前面越好,红塔放越后面越好(主要是腾前面的位置给另外两种),这用了点贪心技巧,但绝对是对的

所以我们可以枚举某个点 后面全部是放红塔。。。然后我绿塔和蓝塔该怎么处理呢。这个时候我们不能猛想全局,考虑单个点的伤害,前面是绿和蓝,后面是红,这样在这个点所受的伤害,我枚举前面蓝塔有几个,则绿塔就是长度-蓝的数目,这样对该点的伤害我就可以求出来,然后通过i-1过渡出来,就可以得到整个前段受的伤害,再通过直接算出后面红塔的伤害,就可以得出这个状态下受到的总伤害,最后取最大值即可

#include <iostream>
#include <cstdio>
#include <cstring>
#define LL __int64
using namespace std;
LL dp[1510][1510];
int main()
{
int w,kase=0;
LL n,x,y,z,t;
scanf("%d",&w);
while (w--)
{
memset(dp,0,sizeof dp);
scanf("%I64d%I64d%I64d%I64d%I64d",&n,&x,&y,&z,&t);
LL ans=0;
for (int i=1;i<=n;i++){
for (int j=0;j<=i;j++){
if(j<i)
dp[i][j]=dp[i-1][j]+((i-1-j)*z+t)*j*y;
if (j>0){
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+((i-j)*z+t)*(j-1)*y);
} ans=max(ans,dp[i][j]+((i-j)*z+t)*(n-i)*(x+j*y)); }
}
ans=max(ans,n*t*x);
printf("Case #%d: ",++kase);
printf("%I64d\n",ans);
}
}

  

HDU_4939 stupid tower defense 2014多校7 多变量型DP的更多相关文章

  1. hdu4939 Stupid Tower Defense (DP)

    2014多校7 第二水的题 4939 Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131 ...

  2. dp --- hdu 4939 : Stupid Tower Defense

    Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  3. HDU4939Stupid Tower Defense (有思想的dp)

    Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...

  4. Stupid Tower Defense

    Problem Description FSF is addicted to a stupid tower defense game. The goal of tower defense games ...

  5. 初识Tower Defense Toolkit

    Tower Defense Toolkit 做塔防游戏的插件 主要层次如下图: 1GameControl _ _Game Control(Script) _ _ _Spawn Manager _ _ ...

  6. Tower Defense Game

    Tower Defense Game 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is a tower defense game with n level ...

  7. hdu 4779 Tower Defense (思维+组合数学)

    Tower Defense Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) ...

  8. HDU 4779:Tower Defense

    Tower Defense Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)T ...

  9. 2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)

    题目链接 题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔: 红塔 :经过该塔所在单位时,每秒会受到x点伤害. 绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害 ...

随机推荐

  1. redis之五大数据类型介绍

    目录 redis五大数据类型 1. string(字符串) 特点: 格式: 基本操作: 2. hash(哈希) 特点: 格式: 基本操作 3. list(列表) 特点 格式 基本操作 4. set(集 ...

  2. C# 中的委托和事件 转载张子阳的

        C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人 ...

  3. 1_03_MSSQL课程_约束详解

    复习: ->创建数据库的SQL:******** create database 数据库名 on ( name=‘’, size=5MB, filegrowth=2MB, filename=&q ...

  4. Day3-J-4 Values whose Sum is 0 POJ2785

    The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute ...

  5. 关于c++ 感想

    前言 在学校开展了c++的课程,但是不得不说相当乏味. 原因很简单: 1.感觉c++很高级,自己就这智商怎么学的会哦,自己给了自己门槛. 2.c++很难快速的做出一个能够展现的项目,缺乏成就感. 3. ...

  6. 「NOIP2016」天天爱跑步

    传送门 Luogu 解题思路 树上差分+桶计数. 我们发现在一条路径上的点 \(i\) ,它可以观测到玩家的条件是: \(i \in (u \to LCA),dep_u=w_i+dep_i\) \(i ...

  7. 「SCOI2009」windy数

    传送门 Luogu 解题思路 数位 \(\text{DP}\) 设状态 \(dp[now][las][0/1][0/1]\) 表示当前 \(\text{DP}\) 到第 \(i\) 位,前一个数是 \ ...

  8. JAVA 集合 List 分组的两种方法

    CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...

  9. C# 篇基础知识3——面向对象编程

    面向过程的结构化编程,例如1972年美国贝尔研究所推出的C语言,这类编程方式重点放在在定函数上,将较大任务分解成若干小任务,每个小任务由函数实现,分而治之的思想,然而随着软件规模的不断扩张,软件的复杂 ...

  10. ubi问题总结

    一.挂载成功后,使用正常.有时会出现:UBIFS error (pid 76): ubifs_read_node: bad node type (255 but expected 1)UBIFS er ...