hdu 2829 重学四边形不等式优化
来源:互联网 发布:java数组从小到大排序 编辑:程序博客网 时间:2024/05/17 04:38
#include <iostream>#include<stdio.h>#include<string.h>#include<algorithm>#define ll long longusing namespace std;const int maxn=1010;const int inf=1e9+7;ll cost[maxn][maxn],dp[maxn][maxn],s[maxn][maxn];void DP(int n,int m){ for(int i=0;i<n;i++) { dp[0][i]=cost[0][i]; s[0][i]=0; s[i][n]=n-2; } for(int i=1;i<=m;i++) for(int j=n-1;j>=0;j--) { dp[i][j]=inf; for(int k=s[i-1][j];k<=s[i][j+1];k++) { if(dp[i][j]>dp[i-1][k]+cost[k+1][j]) { dp[i][j]=dp[i-1][k]+cost[k+1][j]; s[i][j]=k; } } }}int main(){ int n,m; ll sum[maxn],tem[maxn]; while(~scanf("%d%d",&n,&m)&&n&&m) { memset(cost,0,sizeof(cost)); memset(dp,0,sizeof(dp)); memset(s,0,sizeof(s)); for(int i=0;i<n;i++) { scanf("%I64d",&tem[i]); if(i==0) sum[i]=tem[i]; else sum[i]=sum[i-1]+tem[i]; } for(int i=1;i<n;i++) cost[0][i]=cost[0][i-1]+sum[i-1]*tem[i]; for(int i=1;i<n;i++) for(int j=i+1;j<n;j++) cost[i][j]=cost[i][j-1]+(sum[j-1]-sum[i-1])*tem[j]; DP(n,m); printf("%lld\n",dp[m][n-1]); }}
0 0
- hdu 2829 重学四边形不等式优化
- HDU 2829 Lawrence【dp四边形不等式优化】
- hdu 2829 dp+四边形不等式优化
- Lawrence - HDU 2829斜率优化,四边形不等式优化
- HDU-2829 Lawrence 【斜率优化DP】【四边形不等式优化】
- HDU 2829 Lawrence(DP+四边形不等式优化)
- hdu 2829 Lawrence (四边形不等式优化DP)
- HDU 2829 Lawrence(四边形不等式优化DP)
- HDU 3480 Division【dp四边形不等式优化】
- hdu 3516 dp+四边形不等式优化
- hdu 3506 dp+四边形不等式优化
- Monkey Party - HDU 3506 四边形不等式优化
- Tree Construction - HDU 3516 四边形不等式优化
- hdu 3480 dp 四边形不等式优化
- hdu 3516 Tree Construction 四边形不等式优化
- hdoj 2829 Lawrence 四边形不等式优化dp
- 四边形不等式优化
- POJ1160-四边形不等式优化
- 汉字转拼音方法
- struts2 学习笔记之二(初识servlet)
- Android 异常
- 丹麦海峡(贪心)
- 进程间通信(信号量通信)
- hdu 2829 重学四边形不等式优化
- Java BlockingQueue 源码分析
- 求一件趁手兵器-上-UBUNTU+CUDA+BOOST+THEANO+CURRENNT+NETCDF+OPENCV配置大杂烩
- 输入输出格式(三)
- Android软键盘弹出时把布局顶上去,控件乱套解决方法
- 黑马程序员——Java反射机制
- POJ 1625 AC自动机+DP
- Docker 使用方法总结之:镜像
- innodb RC级别下加锁特殊情况