hdu 5115 Dire Wolf
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115
题目分类:区间dp
题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么我们受到的伤害值为这只狼的攻击值与它旁边的两只狼的附加值的和,求把所有狼都杀光受到的最小的伤害值。
题目分析:
dp[i][j]表示把区间i,j内的所有狼杀光所受到的最小的伤害。
状态转移方程为
dp[i][j]=min{dp[i][k]+dp[k+1][j]-b[k]+b[i+1],
dp[i][k]+dp[k+1][j]-b[k+1]+b[j+1]}(i<=k<j)
先确定长度,然后再确定ij,否则是不对的
代码:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
/**赤裸裸的区间DP
dp[i][j]表示把区间i,j内的所有狼杀光所受到的最小的伤害。
状态转移方程为
dp[i][j]=min{dp[i][k]+dp[k+1][j]-b[k]+b[i+1],
dp[i][k]+dp[k+1][j]-b[k+1]+b[j+1]}(i<=k<j)
这里讨论了先杀左边的还是先杀右边的处理的时候要注意a[0],b[0],a[n+1],b[n+1]的初值都是0.*/
int t,n;
int a[];
int b[];
int dp[][];
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
scanf("%d",&t);
for(int kase=;kase<=t;kase++)
{
scanf("%d",&n);
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=;i<=n;i++)
{
scanf("%d",&b[i]);
}
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++)
{
dp[i][i]=a[i]+b[i-]+b[i+];
//printf("%d ",dp[i][i]);
}
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
dp[i][j]=INF;
}
}
// memset(dp,0,sizeof(dp));
for(int len=;len<=n;len++)
{
for(int i=;i+len<=n;i++)
{
int j=i+len;
for(int k=i;k<j;k++)
{
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]-b[k]+b[i-]);
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]-b[k+]+b[j+]);
}
}
}
printf("Case #%d: ",kase);
printf("%d\n",dp[][n]);
}
return ;
}
hdu 5115 Dire Wolf的更多相关文章
- HDU 5115 Dire Wolf 区间dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...
- 动态规划(区间DP):HDU 5115 Dire Wolf
Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...
- hdu 5115 Dire Wolf(区间dp)
Problem Description Dire wolves, also known as Dark wolves, are extraordinarily large and powerful w ...
- HDU - 5115 Dire Wolf (非原创)
Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...
- HDU 5115 Dire Wolf (区间DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:有一些狼,从左到右排列,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这 ...
- HDU 5115 Dire Wolf ——(区间DP)
比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: #inc ...
- [题解] HDU 5115 Dire Wolf 区间DP
考虑先枚举所有的物品中最后拿走的,这样就分成了2个子问题,即先拿完左边的,再拿完右边的,最后拿选出的那个.令dp(i,j)表示拿完[i,j]所有物品的最小代价.你可能会说,我们拿[i,j]这一段物品的 ...
- Hdu OJ 5115 Dire Wolf (2014ACM/ICPC亚洲区北京站) (动态规划-区间dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:前面有n头狼并列排成一排, 每一头狼都有两个属性--基础攻击力和buff加成, 每一头 ...
- Dire Wolf HDU - 5115(区间dp)
Dire Wolf Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)Total ...
随机推荐
- Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)
1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
- 【剑指Offer学习】【面试题17 ::合并两个排序的链表】
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是依照递增排序的 链表结点定义例如以下: public static class ListNode { int value; List ...
- int 转换成 CString(VC2008里有这个问题)
int s = 123; CString str; str.Format("%d",s); 这样就可以了,但是有的会提示这个错误 如果出现这个错误,就改成下面这个就OK了: st ...
- 基于visual Studio2013解决C语言竞赛题之1029二元数组平均值
题目 解决代码及点评 /* 功能:求二维数组中每行元素的平均值,不许引入其它的数组 时间:16:21 2013/10/24 */ #include<stdio ...
- Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景
工厂方法一般写法 StartLayer * StartLayer::create() { StartLayer *sl = new StartLayer(); sl->init(); sl-&g ...
- Android实时获取音量(单位:分贝)
基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压).因 ...
- 【Android】属性动画
转载请注明出处:http://blog.csdn.net/h28496/44338669 属性动画的原理 通过不断的设置一个View的属性让其出现动画效果.比如,不断地设置一个Button的x值.这个 ...
- 09-使用for循环输出空心菱形(循环)
/** * 使用for循环输出空心菱形 * */ public class Test7 { public static void main(String[] args) { for (int i = ...
- 调整系统的inode数量
inode节点中,记录了文件的类型.大小.权限.所有者.文件连接的数目.创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针. 一般情况不需要特殊配置,如果存放文件很多,需要配置 ...