nyoj 460 项链 区间DP
来源:互联网 发布:mac live photo 编辑:程序博客网 时间:2024/04/30 10:33
很经典的一个DP题目,没接触过区间DP的时候老师就拿这个当例子说过。
同石子合并差不多,因为是个环形的,所以就直接在序列后面接一个相同序列,完成环的功能。
状态转移方程dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i].s*a[k].e*a[j].e),开始把dp[i][k]和dp[k+1][j]之间的运算搞成了乘法一直都很大,调试很久没发现错误...后面看看题目推算才知道自己犯傻了。
不用结构体那么方程就变为了dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1])
#include<stdio.h>#include<string.h>#include<stdlib.h>#define INF 0x7ffffffflong long dp[405][405];int a[405];long long max(long long x,long long y){if(x>y)return x;return y;}int main(){long long i,j,n;while(scanf("%lld",&n)!=EOF){memset(dp,0,sizeof(dp));for(i=1;i<=n;i++)//环形{scanf("%d",&a[i]);a[i+n]=a[i];}for(int v=1;v<2*n;v++) { for(int i=1;i<2*n-v;i++) { int j = i + v; for(int k=i;k<j;k++) dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]); } }long long m=0;for(i=1;i<=n;i++)m=max(dp[i][i+n-1],m);printf("%lld\n",m);}return 0;}
0 0
- nyoj 460 项链 区间DP
- nyoj 460 项链(区间DP)
- 经典问题三.(环形区间dp) 项链 nyoj 460
- codevs1154 能量项链(区间DP)
- [noip2006]能量项链 区间DP
- HZNU-能量项链【区间dp】
- Codevs1154[能量项链] 区间DP
- 区间DP NOIP2006 能量项链
- NYOJ460 项链(环形区间DP)
- codevs1154 能量项链 区间dp
- NYOJ 460 项链
- nyoj 304(区间dp)
- 能量项链 (区间DP,环状)
- wikioi 1154 - 能量项链 (环形区间dp)
- Hrbustoj1376 能量项链 简单区间DP
- 【CODEVS 1154】能量项链(区间DP)
- 能量项链 hrbustoj 1376 区间dp
- noip2006 能量项链 (区间dp)
- #pragma 预处理指令
- 生活感悟
- iOS 本地化
- 发福利,整理了一份关于“资源汇总”的汇总
- Java 异步IO(2) 文件异步IO Callback
- nyoj 460 项链 区间DP
- Java内存泄露原因详解
- BZOJ 3289 Mato的文件管理 莫队算法+树状数组
- 【C#网络编程系列】专题八:P2P编程
- .NET开源了,Visual Studio开始支持 Android 和 iOS 编程并自带Android模拟器
- opencv Mat
- JavaScript splice() 方法
- mac中的软件如何选择隐藏目录?
- 汇编学习之基本指令