加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

【DP】 HDU 5115 Dire Wolf 区间DP

发布时间:2020-12-13 20:22:21 所属栏目:PHP教程 来源:网络整理
导读:点击打开链接 题意:1头狼的攻击力= 自己攻击力相邻两边的狼的加成 每杀1头狼会收到1次攻击 求遭到的攻击和最小 比较裸的区间DP #include cstdio#include cstring#include cstdlib#include string#include iostream#include algorithm#include sstream#inclu

点击打开链接


题意:1头狼的攻击力= 自己攻击力+相邻两边的狼的加成

每杀1头狼会收到1次攻击

求遭到的攻击和最小

比较裸的区间DP

#include <cstdio> #include <cstring> #include <cstdlib> #include <string> #include <iostream> #include <algorithm> #include <sstream> #include <cmath> using namespace std; #include <queue> #include <stack> #include <set> #include <vector> #include <deque> #include <map> #define cler(arr,val) memset(arr,val,sizeof(arr)) #pragma comment(linker,"/STACK:102400000,102400000") typedef long long LL; const int MAXN = 230+1; const int MAXM = 140000; const int INF = 0x3f3f3f3f; const int mod = 1000000007; int a[3000],b[3000]; int dp[300][300]; int dfs(int l,int r) { if(l+1>=r) return 0; if(dp[l][r]!=⑴) return dp[l][r]; dp[l][r]=INF; for(int i=l+1;i<r;i++) { dp[l][r]=min(dp[l][r],dfs(l,i)+dfs(i,r)+a[i]+b[l]+b[r]); } return dp[l][r]; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); #endif int t,n,cas=1; cin>>t; while(t--) { cin>>n; cler(dp,⑴); a[0]=b[0]=a[n+1]=b[n+1]=0; for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); printf("Case #%d: %d ",cas++,dfs(0,n+1)); } return 0; }


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读