loj 1031(区间dp+记忆化搜索)
来源:互联网 发布:java编写小程序 编辑:程序博客网 时间:2024/06/05 21:56
题目链接:http://lightoj.com/volume_showproblem.php?problem=1031
思路:dp[i][j]表示从区间i-j中能取得的最大值,然后就是枚举分割点了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define inf 1<<30 7 #define FILL(a,b) memset(a,b,sizeof(a)) 8 9 int dp[111][111],sum[111];10 int n,x;11 12 int dfs(int l,int r)13 {14 if(dp[l][r]!=-inf)return dp[l][r];15 int ans=sum[r]-sum[l-1];16 for(int k=l;k<=r;k++){17 ans=max(ans,sum[k]-sum[l-1]-dfs(k+1,r));//取左边的18 ans=max(ans,sum[r]-sum[k-1]-dfs(l,k-1));//取右边的19 }20 return dp[l][r]=ans;21 }22 23 24 int main()25 {26 int _case,t=1;27 scanf("%d",&_case);28 while(_case--){29 scanf("%d",&n);30 FILL(sum,0);31 for(int i=0;i<=n;i++)32 for(int j=0;j<=n;j++)dp[i][j]=-inf;33 for(int i=1;i<=n;i++){34 scanf("%d",&x);35 dp[i][i]=x;36 sum[i]=sum[i-1]+x;37 }38 printf("Case %d: %d\n",t++,dfs(1,n));39 }40 return 0;41 }
0 0
- loj 1031(区间dp+记忆化搜索)
- loj 1044(dp+记忆化搜索)
- loj 1021(状压dp+记忆化搜索)
- loj 1018(状压dp+记忆化搜索)
- loj 1025(记忆化搜索)
- LOJ 1422(区间DP)
- 区间DP(可以看成记忆化搜索)
- uva 10453 - Make Palindrome (区间dp,记忆化搜索)
- UVA1351-----String Compression-----区间DP(记忆化搜索实现)
- poj1179 区间dp(记忆化搜索写法)有巨坑!
- hdu 4597 Play Game (记忆化搜索,区间dp)
- HDU3427 Clickomania【记忆化搜索】【区间DP】
- 记忆化搜索求解区间型dp
- poj1390区间dp+记忆化搜索
- 记忆化搜索 区间dp uva629
- [CDOJ1321]-区间DP(记忆化搜索)
- hdu4283区间dp 记忆化搜索 区间分化
- loj 1011(状态压缩+记忆化搜索)
- loj 1021(状压dp+记忆化搜索)
- loj 1025(记忆化搜索)
- loj 1155(最大流)
- loj 1156(二分+最大流)
- loj 1150(spfa预处理+二分+最大匹配)
- loj 1031(区间dp+记忆化搜索)
- loj 1032(数位dp)
- loj 1167(二分+最大流)
- loj 1036(dp)
- loj 1037(状压dp)
- loj 1038(dp求期望)
- hdu 4281(MTSP)
- loj 1201(最大独立集)
- loj 1044(dp+记忆化搜索)