hdoj 4960 DP
来源:互联网 发布:淘宝创业成功故事 编辑:程序博客网 时间:2024/05/21 22:28
这是题解:http://blog.sina.com.cn/u/1809706204
已经说得很明白了。
直接上代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define MAX 5555#define INF 0x3f3f3f3fint pa[2][MAX],a[MAX];__int64 v[MAX];int N,num;__int64 suml,sumr;int dp[MAX];void deal(){ int i,j,k=1; suml=v[1],sumr=v[N]; pa[0][0]=0; pa[1][0]=N+1; for(i=1,j=N;i<j;) { if(suml==sumr) { pa[0][k]=i; pa[1][k++]=j; i++,j--; suml+=v[i]; sumr+=v[j]; } else if(suml<sumr) { i++; suml+=v[i]; } else { j--; sumr+=v[j]; } } num=k;}void work(){ int i,j,k; int ans=INF; memset(dp,0x3f,sizeof(dp)); dp[0]=0;a[0]=0; for(i=1;i<num;i++) { for(j=0;j<i;j++) { dp[i]=min(dp[i],dp[j]+a[pa[0][i]-pa[0][j]]+a[pa[1][j]-pa[1][i]]); } } for(i=0;i<num;i++) { int len=a[pa[1][i]-pa[0][i]-1]; ans=min(ans,dp[i]+a[pa[1][i]-pa[0][i]-1]); } printf("%d\n",ans);}int main(){ int i,j; while(scanf("%d",&N),N) { for(i=1;i<=N;i++) { scanf("%I64d",&v[i]); } for(i=1;i<=N;i++) { scanf("%d",&a[i]); } deal(); work(); } return 0;}
0 0
- hdoj 4960 DP
- 【DP】 HDOJ 4960 Another OCD Patient
- HDOJ 1949 Tourist(DP)
- hdoj 1500 Chopsticks(DP)
- hdoj 1208 dp
- HDOJ Dividing DP
- HDOJ FATE 二维DP
- HDOJ - 2375 状态DP..
- HDOJ - 4502 简单DP..
- HDOJ 1011 树形DP
- HDOJ 1069(经典Dp)
- HDOJ 3944 DP?
- hdoj 3652 数位dp
- 【DP】 HDOJ 2048 4945
- hdoj 4906 状态dp
- 【DP】 HDOJ 4455 Substrings
- HDOJ 4293 dp
- 【DP】 HDOJ 3530 Subsequence
- 解决长按手势两次触发事件的问题
- 用VMware 安装Ubuntu详细过程(图解)
- sqlldr简单导入自增序列的数据
- opencv 安装的问题
- [LeetCode] Longest Palindromic Substring 解题报告
- hdoj 4960 DP
- jquery.form 上传文件,且完成后页面不跳转
- iOS开发之Objective-C与JavaScript的交互
- EPON原理及关键技术
- socket 组播接收和发送实例
- 39个让你受益的HTML5教程
- DexFile_openDexFileNative函数解析
- Objective-C 单例、用户首选项(UserDefaults)、对象归档
- javascript事件监听