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

输入要求:总共T组数据,每组N只狼,按顺序输入全部狼的主动攻击力和然后再按顺序输入全部狼的附带攻击力

输出要求:Case #x: y x第几组数据,y最少受到的伤害

思路引导:首先所有狼的主动攻击一定是必须全部加上的然后,然后就是调整附带伤害的顺序来求出最小值。

dp[l][r]代表l-r受到的伤害总和,dp[l][r]=min(dp[l][r],dp[l][k-1]+dp[k+1][r]+a[k]+b[l-1]+b[r+1]);

注意的地方就是把端点处理一下。

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
//ctrl shift o
//Array.fill(dp[i],inf)
class MyInputStream extends InputStream{public BufferedInputStream bis=new BufferedInputStream(System.in);public int read() throws IOException{int i;while((i = bis.read())<48) {if(i==-1)return -1;}int temp=0;while(i>47) {temp=temp*10+i-48;i=bis.read();}return temp;}
}
public class Main {static int INF=(int)1e9;static final int maxn=505;static long [][]dp=new long[maxn][maxn];static int []a=new int[maxn];static int []b=new int[maxn];public static int gcd(int a,int b) {if(a<b) return gcd(b,a);if(a%b==0) return b;return gcd(b,a%b);}private static MyInputStream cin;public static void main(String[] args) throws IOException{cin = new MyInputStream();int t=cin.read();for(int cas=1;cas<=t;cas++){int n=cin.read();for(int i=1;i<=n;i++) {a[i]=cin.read();}for(int i=1;i<=n;i++) {b[i]=cin.read();}for(int i=1;i<=n;i++) {for(int j=i;j<=n;j++) {dp[i][j]=INF;}}b[0]=0;b[n+1]=0;for(int i=0;i<=n;i++) {dp[0][i]=0;dp[i][n+1]=0;}int len;for(len=1;len<=n;len++) {for(int l=1;l<=n-len+1;l++) {int r=l+len-1;for(int k=l;k<=r;k++) {dp[l][r]=Math.min(dp[l][r],dp[l][k-1]+dp[k+1][r]+a[k]+b[l-1]+b[r+1]);}}}System.out.printf("Case #%d: ",cas);System.out.println(dp[1][n]);}}
}

hdu 5115 区间dp 狼BUFF相关推荐

  1. The 2014 ACM-ICPC BeiJing D - Dire Wolf HDU - 5115 区间dp

    题意 n个狼 排成一排 我们要把一排狼都删除掉 删除一个狼的花费是这个狼的权值和左右两个狼的附加值 求最小花费 分析 考虑区间dp dp[i][j]表示i到j的最小花费 我们可以枚举其中的k 为序列中 ...

  2. HDU 5115 (杀狼,区间DP)

    题意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时, ...

  3. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索

    // 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...

  4. hdu 2476 区间dp

    题意: 给出两个串s1和s2,一次只能将一个区间刷一次,问最少几次能让s1=s2 例如zzzzzfzzzzz,长度为11,我们就将下标看做0~10 先将0~10刷一次,变成aaaaaaaaaaa 1~ ...

  5. hdu 4745 区间dp

    题意:求一个环的最长回文序列,是序列不是串 链接:点我 起点是可以任意的, 所以只要求出每个区间的最长回文序列之后取max(dp[1][i]+dp[i+1][n]),即可得最终答案 本来是想扩展两倍的 ...

  6. You Are the One HDU - 4283 区间DP

    https://cn.vjudge.net/problem/HDU-4283 题目大意n个人轮流上台,第i个人有一个屌丝值Di 当他为第k个上台的人时候会获得屌丝值(K-1)*Di, 这些人轮流上台, ...

  7. HDU 5115 Dire Wolf 区间dp

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

  8. HDU 5115 Dire Wolf (区间DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题意:很多狼排成一排,每只狼有一个攻击值a[i]和附加攻击值b[i].当你消灭一只狼时,你会受到 ...

  9. HDU 5115 (区间DP)

    题目大意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼 ...

最新文章

  1. 机器学习工程师需要具备的5种软技能
  2. java 框架 Dao层 Mapper层 controller层 service层 model层 entity层 简介
  3. 介绍importlib
  4. 2021长安二中高考成绩查询,长安一中、长安二中,2017年高考上线喜报!
  5. 制做任意大小的bmp,并在其中写汉字
  6. Vue v-if,v-else-if,v-else的使用
  7. java.sql.SQLException: The server time zone value ‘???ú±ê×??±??‘ is unrecognized or represents more
  8. 行为模式之备忘录模式
  9. java第四次上机作业
  10. 时间加密算法_物联网安全:可计算加密算法
  11. 15.导入网表及status介绍[原创]
  12. 链表的实现(Java语言描述)
  13. wangeditor react中使用
  14. 腾讯云window阿帕奇服务器开通ssl证书实现https访问
  15. h2ouve下载 insyde_H20UVE_100.00.9.2 Insyde H2OUVE (UEFI Variable Editor) - 下载 - 搜珍网
  16. 思科ccnp认证工程师必看
  17. KingbaseES V8R6 ksql 关闭自动提交
  18. 内网穿透+ssh登录打造私人云服务器
  19. nowcoder 79F 小H和圣诞树 换根 DP + 根号分治
  20. onload什么时候执行

热门文章

  1. firework 怎么导出html,由Fireworks导出的htm生成imageset文件
  2. python数组全部平方_LeetCode 题解 | 279. 完全平方数
  3. DNS服务器主配置文件路径,DNS 搭建主从DNS服务器(转载)
  4. npm升级报错Error: EINVAL: invalid argument, mkdir解决办法
  5. mysql 统计报表界面查询案例 经典sql语句
  6. maya计算机内存不足请保存,maya怎么渲染_Maya内存不足不能渲染怎么优化场景
  7. i9 12代处理器和i7 9代区别
  8. M330左键有时候按下没反应的解决 - 换微动
  9. 偷懒代码块之保持屏幕常亮
  10. 计算机图形学空间判断,计算机图形学