题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115

题目大意:前面有n头狼并列排成一排, 每一头狼都有两个属性--基础攻击力和buff加成, 每一头狼的攻击力等于他自身的基础攻击力加上旁边狼对他的buff加成。 现在你被这群狼围着了, 必须将这些狼全部击败, 你才能逃出, 你每攻击一头狼,收到的伤害是狼的总攻击力。现在问,你逃出这些狼的围攻需要的最小代价(收到的伤害);

解题思路:声明dp数组, dp[i][j]代表从i到j的区间杀死所有狼的最小代价, 然后枚举[i,j]区间中最后杀死的那头狼k。

那么状态方程就很容易写了: dp[i][j] = min(dp[i][j], dp[i][k-1] + dp[k+1][j] + a[k] + b[i-1] + b[j+1])

k为最后一个杀死的, 那么狼k的总攻击力应该为他的基础攻击力a[i],加上他周围两个狼(i-1)和(j+1)的buff加成。

代码如下:

#include<stdio.h>
#include<string.h>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std; typedef long long ll;
const int INF = ; const int N = ;
int dp[N][N];
int a[N], b[N]; void solve(int cases)
{
int n;
scanf("%d", &n);
memset(a, , sizeof(a));
memset(b, , sizeof(b));
memset(dp, , sizeof(dp)); for(int i=; i<=n; ++ i)
scanf("%d", &a[i]);
for(int i=; i<=n; ++ i)
scanf("%d", &b[i]); for(int i=; i<=n; ++ i)
for(int j=; j<=n; ++ j)
dp[i][j] = (i<=j?INF:); for(int i=; i<n; ++ i)
{
for(int j=; j+i<=n; ++ j)
{
int l = j, r = j+i;
for(int k=j; k<=j+i; ++ k)
{
dp[l][r] = min(dp[l][r], dp[l][k-] + dp[k+][r] + a[k] + b[l-] + b[r+]);
}
}
}
printf("Case #%d: %d\n", cases, dp[][n]);
} int main()
{
int t;
scanf("%d", &t);
for(int i = ; i <= t; ++ i)
{
solve(i);
}
return ;
}

Hdu OJ 5115 Dire Wolf (2014ACM/ICPC亚洲区北京站) (动态规划-区间dp)的更多相关文章

  1. HDU 5112 A Curious Matt (2014ACM/ICPC亚洲区北京站-重现赛)

    A Curious Matt Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) ...

  2. HDU 5115 (2014ACM/ICPC亚洲区北京站) D题(Dire Wolf)

    题目传送门 设dp[i][j]为杀掉区间i到j之间的狼需要付出的最小代价,那么dp[i][j]=min{dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]} Java代码 ...

  3. Hdu OJ 5113 Black And White (2014ACM/ICPC亚洲区北京站) (搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:有k种颜色的方块,每种颜色有ai个, 现在有n*m的矩阵, 问这k种颜色的方块能否使任 ...

  4. hdu 5122(2014ACM/ICPC亚洲区北京站) K题 K.Bro Sorting

    传送门 对于错想成lis的解法,提供一组反例 1 3 4 2 5同时对于这次案例也可以观察出解法:对于每一个数,如果存在比它小的数在它后面,它势必需要移动,因为只能小的数无法向右移动,而且每一次移动都 ...

  5. 2014ACM/ICPC亚洲区北京站 上交命题

    A http://acm.hdu.edu.cn/showproblem.php?pid=5112 输入n个时刻和位置,问那两个时刻间速度最快. 解法:按照时间排序,然后依次求相邻两个之间的速度,速度= ...

  6. 2014ACM/ICPC亚洲区北京站题解

    本题解不包括个人觉得太水的题(J题本人偷懒没做). 个人觉得这场其实HDU-5116要比HDU-5118难,不过赛场情况似乎不是这样.怀疑是因为老司机带错了路. 这套题,个人感觉动态规划和数论是两个主 ...

  7. 2014ACM/ICPC亚洲区北京站

    1001  A Curious Matt 求一段时间内的速度单位时间变化量,其实就是直接求出单位时间内的,如果某段时间能达到最大那么这段时间内必定有一个或一小段单位时间内速度变化是最大的即局部能达到最 ...

  8. hdu 5115 Dire Wolf(区间dp)

    Problem Description Dire wolves, also known as Dark wolves, are extraordinarily large and powerful w ...

  9. HDU 5115 Dire Wolf 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...

随机推荐

  1. oracle审计详解-转

    http://blog.chinaunix.net/u2/66903/showart_2082884.htmlOracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这 ...

  2. AsyncTask 轻量级的异步类

    初步:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html 详细:http://blog.csdn.net/liuhe68 ...

  3. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法

    SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...

  4. ADF_Data Binding系列3_使用Placeholder Data Control

    2015-02-16 Created By BaoXinjian

  5. WindowsForm只允许运行一个实例

    static class Program { private static Mutex onlyOne; /// <summary> /// 应用程序的主入口点. /// </sum ...

  6. webpy分页类 + 上传类

    webpy没有分页类.按照php的思路.自己编了一个.数据库用的是sqlite. class Page(object): '''分页类''' def __init__(self,page_size,d ...

  7. 第四周psp

    10号 类别c 内容c 开始时间s 结束e 中断I 净时间T GUI 查资料 12:10 12:40 0m 30m GUI 安装QT 19:10 21:00 20m 90m GUI 学习QT 23:0 ...

  8. Codeforces 723e [图论][欧拉回路]

    /* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给你一个有n个点,m条边的无向图,给每条边规定一个方向,使得这个图变成有向图,并且使得尽可能多的点入度与出度相同. 输出有多少个这样的点并且输出 ...

  9. 远程登录,无法加载explorer

    最近不知什么缘故,远程登录服务器时,无法登录到桌面了,只能用mstsc.exe /admin方式登录或者登录后按(CTRL+ALT+END)进入任务管理,新建运行explorer.exe才能登录到桌面 ...

  10. Linux学习笔记(一)

    1.正则表达式 \w 匹配任何字类字符,包括下划线.与“[A-Za-z0-9_]”等效. \W 与任何非单词字符匹配.与“[^A-Za-z0-9_]”等效. +    一次或多次匹配前面的字符或子表达 ...