首页 > 代码库 > HDU 5115 Dire Wolf ——(区间DP)
HDU 5115 Dire Wolf ——(区间DP)
比赛的时候以为很难,其实就是一个区间DP= =。。思路见:点我。
区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完。。
代码如下:
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 const int N = 200 + 5; 6 const int inf = 0x3f3f3f3f; 7 8 int n; 9 int a[N],b[N];10 int dp[N][N];11 12 int main()13 {14 int T;scanf("%d",&T);15 for(int kase=1;kase<=T;kase++)16 {17 scanf("%d",&n);18 memset(a,0,sizeof(a));19 memset(b,0,sizeof(b));20 for(int i=1;i<=n;i++) scanf("%d",a+i);21 for(int i=1;i<=n;i++) scanf("%d",b+i);22 23 memset(dp,inf,sizeof(dp));24 for(int len=0;len<=n;len++)25 {26 for(int i=1;i+len<=n;i++)27 {28 int j = i + len;29 for(int k=i;k<=j;k++)30 {31 dp[i][j] = min(dp[i][j],b[i-1]+b[j+1]+a[k]+(k>i?dp[i][k-1]:0)+(k<j?dp[k+1][j]:0));32 }33 }34 }35 printf("Case #%d: %d\n",kase,dp[1][n]);36 }37 }
HDU 5115 Dire Wolf ——(区间DP)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。