HDU 5115 Dire Wolf

news/2024/11/29 17:28:09/

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5115


森林狼嘛,1费11但是可以给相邻的随从加buff,hhh

现在有一列森林狼,你需要A死他们,当然你也会受到伤害每一只森林狼有自己的攻击力a[i],以及对相邻的加成b[i],当一只森林狼挂掉后两边的即成相邻

求消耗最少的血量


区间DP

设f[i][j]为i~j消耗的血量,

f[i][j]=min(f[i][k]+f[k+1][j]+a[k])+b[i-1]+b[j+1] (i<k<j)

这样只能处理区间长度>=3的情况,对于长度=1或=2的情况需要预处理出来


代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>using namespace std;int T;int n;int a[205],b[205];int f[205][205];int main()
{scanf("%d",&T);for (int t=1;t<=T;t++){memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&a[i]);}for (int i=1;i<=n;i++){scanf("%d",&b[i]);}for (int i=1;i<=n;i++){f[i][i]=a[i]+b[i-1]+b[i+1];}for (int l=2;l<=n;l++){for (int i=1;i+l-1<=n;i++){int j=l+i-1;f[i][j]=min(f[i+1][j]+a[i],f[i][j-1]+a[j]);for (int k=i+1;k<j;k++){f[i][j]=min(f[i][j],f[i][k-1]+f[k+1][j]+a[k]);}f[i][j]+=b[i-1]+b[j+1];}}printf("Case #%d: %d\n",t,f[1][n]);}return 0;
}



http://www.ppmy.cn/news/112795.html

相关文章

刷基础题-hdu5115

http://acm.hdu.edu.cn/showproblem.php?pid5115 2019.5.30 区间dp&#xff0c;O(N^3)能过&#xff0c;攻击一匹狼的花费是这匹狼的攻击力和相邻狼的额外攻击力 #include <stdio.h> #include <algorithm> #include <string.h> #define mem(x,y) memset(x,y…

hdu5115(区间dp)

链接&#xff1a;点击打开链接 题意&#xff1a;有一排狼&#xff0c;每只狼有一个伤害A&#xff0c;还有一个伤害B。杀死一只狼的时候&#xff0c;会受到这只狼的伤害A和这只狼两边的狼的伤害B的和。如果某位置的狼被杀&#xff0c;那么杀它左边的狼时就会收到来自右边狼的B&…

HDU-5115-区间DP

https://vjudge.net/problem/HDU-5115 一群狼&#xff0c;他的攻击力等于本身的攻击力加上旁边的攻击力&#xff08;若是两边就只加一个&#xff09;&#xff0c;当把他杀掉之后&#xff0c;他本身的附加攻击力都会消失&#xff0c;问你最小的代价&#xff08;杀了一只狼就要承…

HDU5115 区间dp

题意 思路&#xff1a; length less~larger dp[i][j] min(dp[i][j],dp[i][k - 1] dp[k 1][j] a[k] b[i - 1] b[j 1]); qaq看注释吧 ACcode #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<string…

HDU 5115 Dire Wolf(区间dp)

目录 问题概述4维状态设计分析代码 2维状态设计分析代码 随机序 ⇒ \Rightarrow ⇒ 区间序 ⇒ \Rightarrow ⇒ dfs序随机序区间序dfs序 问题 HDU 5115 Dire Wolf - https://acm.hdu.edu.cn/showproblem.php?pid5115 概述 方法&#xff1a;区间dp对于一个区间 [ l &#…

hdu5115

传送门&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5115 题意&#xff1a;有一些狼&#xff0c;从左到右排列&#xff0c;每只狼有一个伤害A&#xff0c;还有一个伤害B。杀死一只狼的时候&#xff0c;会受到这只狼的伤害A和这只狼两边的狼的伤害B的和。若两只狼之间…

hdu 5115

太弱了打了一年这种题还做不出来。。。 dp[i][j] min(dp[i][j],dp[i][k-1]dp[k1][j]a[k]b[i-1]b[j1]) k:i->j; dp[i][k-1]dp[k1][j]a[k]b[i-1]b[j1] 的理解是先把k左边的区间消掉再把k右边的点消掉&#xff0c;最后消灭k&#xff0c;当消灭k时因为两边都没了所以受i-1和j…

HDU - 5115

题目链接&#xff1a;HDU - 5115 不难看出可以区间dp&#xff0c;不过有一些小技巧。 假设当前第一个攻击的区间为【l&#xff0c;r】&#xff0c;这个区间最后死的狼是k&#xff0c;那么就很好转移了。如果枚举第一个死的狼&#xff0c;不好转移。 AC代码&#xff1a; #prag…