题意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力。你杀死一只狼。你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时,   自己受到的伤害最小。(提醒,狼杀死后就消失,身边原本相隔的两只狼会变成相邻,而且不需要考虑狼围城环这种情况)

题解:明显的区间DP,但是这题中需要自己确定一个 方案,不难想到先打2边在打中间;

   子问题:在区间i,j上的代价;

   划分:区间的直接合并的过程中,是区间和区间合并还是区间和点合并,即分割点是不是在边界;

总结:又是初始化,在dp问题的初始化上已经错了许多次了,写出转移方程后,一定要注意好边界情况以及 f 的第一项

 #include <cstdio>
#include <iostream>
#include <cstring>
using namespace std; const int maxn=;
const int INF=0x3f3f3f3f;
int f[maxn][maxn], a[maxn], b[maxn]; int main()
{
//freopen("in.txt", "r", stdin);
int T, kase=; cin>>T;
while(T--)
{
memset(a, , sizeof(a));
memset(b, , sizeof(b));
memset(f, , sizeof(f));
//memset(f, 0x3f, sizeof(f));
//这题的状态转移方程,有个f[i][k-1]和f[k+1][j]
int n; cin>>n;
for(int i=; i<=n; i++)
cin>>a[i];
for(int i=; i<=n; i++)
cin>>b[i]; memset(f, 0x3f, sizeof(f));
for(int i=; i<=n; i++)
f[i][i]=a[i]+b[i-]+b[i+]; //f的边界,这里不写也行,把len从0开始就可以了; for(int len=; len<n; len++)
for(int i=; i<=n-len; i++)
{
int j=i+len;
for(int k=i; k<=j; k++) //k的范围要注意,是可以等于i和j的
{
if(k!=j&&k!=i)
f[i][j]=min(f[i][j], f[i][k-]+a[k]+f[k+][j]+b[i-]+b[j+]);
else if(k==j)
f[i][j]=min(f[i][j], f[i][k-]+a[k]+b[i-]+b[j+]);
else
f[i][j]=min(f[i][j], a[k]+f[k+][j]+b[i-]+b[j+]);
//以下的写法也可以AC,就是不判断k是否在端点, 不过这样写的话初始化就要好好注意一下了
//f[i][j]=min(f[i][j], f[i][k-1]+a[k]+f[k+1][j]+b[i-1]+b[j+1]);
}
}
printf("Case #%d: %d\n", ++kase, f[][n]);
}
return ;
}

HDU 5115 (杀狼,区间DP)的更多相关文章

  1. HDU 5115 Dire Wolf 区间dp

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

  2. HDU 5115 Dire Wolf (区间DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目大意:有一些狼,从左到右排列,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这 ...

  3. [题解] HDU 5115 Dire Wolf 区间DP

    考虑先枚举所有的物品中最后拿走的,这样就分成了2个子问题,即先拿完左边的,再拿完右边的,最后拿选出的那个.令dp(i,j)表示拿完[i,j]所有物品的最小代价.你可能会说,我们拿[i,j]这一段物品的 ...

  4. HDU 5693 D Game 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5693 题解: 一种朴实的想法是枚举选择可以删除的两个或三个数(其他的大于三的数都能凑成2和3的和), ...

  5. hdu 4597 Play Game 区间dp

    Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...

  6. hdu 5693 && LightOj 1422 区间DP

    hdu 5693 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5693 等差数列当划分细了后只用比较2个或者3个数就可以了,因为大于3的数都可以由2和3 ...

  7. hdu 4745 Two Rabbits 区间DP

    http://acm.hdu.edu.cn/showproblem.php?pid=4745 题意: 有两只兔子Tom Jerry, 他们在一个用石头围城的环形的路上跳, Tom只能顺时针跳,Jerr ...

  8. hdu 5181 numbers——思路+区间DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5181 题解:https://www.cnblogs.com/Miracevin/p/10960717.ht ...

  9. HDU 1141---Brackets Sequence(区间DP)

    题目链接 http://poj.org/problem?id=1141 Description Let us define a regular brackets sequence in the fol ...

  10. HDU 4632 Palindrome subsequence(区间dp,回文串,字符处理)

    题目 参考自博客:http://blog.csdn.net/u011498819/article/details/38356675 题意:查找这样的子回文字符串(未必连续,但是有从左向右的顺序)个数. ...

随机推荐

  1. Linux给MySQL创建用户,并分配权限

    //登录MYSQL 使用root账号登录 @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User ...

  2. XML CDATA识别“<,>”

    http://www.w3school.com.cn/xml/xml_cdata.asp 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Dat ...

  3. 命名空间"xx"已经包含了"xx"的定义

    例: namespace A.B {    public class C    {             } } 注:重名的不仅仅是类,还可以结构,枚举,命名空间本身也有可能重复. 这个类C若与命名 ...

  4. js点击什么显示什么的内容,隐藏其它和进度条

    点击什么显示什么的内容 <div style="width:200px; height:40px"> <div class="yiji" st ...

  5. puppeteer(六)启动参数——浏览器扩展应用的添加及应用

    前言 最近再做浏览器的自动化,首页是定制化的,是通过extension(扩展)实现的,由于通过puppeteer默认是以无参(即首次以干净的环境)运行的,导致登录页无法正常显示,首先想当然是直接找扩展 ...

  6. [PHP] 解决人人商城收银台不能上传图片问题

    反正网上一大堆,也不知道哪个版本有修复,反正我的没有修复. 问题报错:ReferenceError: angular is not defined 解决如下: 修改文件:addons/ewei_sho ...

  7. WCF 重载

    [ServiceContract] public interface IUser { [OperationContract(Name="ByUseId")] User GetUse ...

  8. MacBook Pro App Store无法下载和更新软件解决方案

    环境:MacBook Pro 2017 系统:MacOS 10.14 问题:在App Store中无法下载和更新软件,输入App Store密码后,弹出如下对话框 咨询苹果官方技术支持电话:400-6 ...

  9. 2018软件工程W班第一次助教小结

    我是数计学院实验教学中心的一名老师,机缘巧合之下,这个学期跟着汪老师上<软件工程实践>这门课.之前有陆续听说过<构建之法>这本书,记得好像学院还有主办过研讨会.对于这门实践课, ...

  10. Dev TreeList 某一列进行格式化显示

    private void treeList1_GetNodeDisplayValue(object sender, GetNodeDisplayValueEventArgs e)        {   ...