hdu 2829
来源:互联网 发布:企业招标软件 编辑:程序博客网 时间:2024/04/28 07:14
稍微比划一下,可以知道cost[i][j]满足四边形不等式的规则
#include <cstdio>#include <cstring>const int MAXN = 1000 + 123;int dp[MAXN][MAXN], cost[MAXN][MAXN], s[MAXN][MAXN];int a[MAXN], sum[MAXN];int main(){ int n, m ; while(scanf("%d%d", &n, &m) != EOF) { if(n == 0 && m == 0) break; sum[0] = 0; for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); sum[i] = sum[i-1] + a[i]; } memset(cost, 0, sizeof(cost)); 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]) * a[j]; for(int i = 1; i <= n; i++) { s[i][0] = 0; dp[i][0] = cost[1][i]; } for(int k = 1; k <= m; k++) { s[n+1][k] = n - 1; for(int i = n; i >= k + 1; i--) { dp[i][k] = dp[k][k-1] + cost[k+1][i]; s[i][k] = k; for(int j = s[i][k-1]; j <= s[i+1][k]; j++) { if(dp[j][k-1] + cost[j+1][i] < dp[i][k]) { dp[i][k] = dp[j][k-1] + cost[j+1][i]; s[i][k] = j; } } } } printf("%d\n",dp[n][m]); } return 0;}
- hdu 2829
- HDU 2829
- hdu 2829
- hdu 2829 Lawrence
- hdu 2829 Lawrence
- hdu 2829 Lawrence
- HDU 2829 Lawrence
- HDU 2829 Lawrence
- 【HDU 2829】 Lawrences
- hdu 2829 Lawrence
- HDU-2829-Lawrence
- 【HDU 2829】Lawrence
- HDU 2829 (斜率优化)
- hdu 2829 Lawrence
- HDU 2829 斜率DP
- hdu
- hdu
- HDU
- Viewports介绍
- 为Ubuntu Linux系统配置LiHei Pro漂亮字体 转自:http://hi.baidu.com/livewithgnome/blog/item/aa7affc64c4c9ca08226ac
- alsa库的移植
- Macbook的常用快捷键
- Intent的传递
- hdu 2829
- Android架构
- HQL中设置参数出现 cannot define positional parameter after any named parameters have been defined
- Android基本概念
- VB的MSHFlexGrid控件点击表头排序的实现
- 头文件string与string.h的区别
- Google In App Billing
- 新安装的Linux 系统开启telnet服务方法
- C++string详解