最小m段和(DP)
来源:互联网 发布:abb robotware软件配置 编辑:程序博客网 时间:2024/06/05 06:26
第四届程序设计大赛 最小m段和
Time Limit:1000MS Memory Limit:65536K
Total Submit:48 Accepted:17
Description
给定 n 个整数组成的序列,现在要求将序列分割为 m 段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?
编程计算该序列的最优m 段分割,使m 段子序列的和的最大值达到最小。
Input
输入数据的第1行中有 2个正整数n和 m(0 <= m <= n <= 200)。正整数 n是序列的长度;正整数m是分割的断数。 接下来的一行中有n个整数 (0 <= 整数 <= 1000)。
Output
输出计算出的 m段子序列的和的最大值的最小值。
Sample Input
9 39 8 7 6 5 4 3 2 1
Sample Output
17
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int a[222],f[222][222];int main(){int n,m,i,j,k,maxt,tmp;while(scanf("%d%d",&n,&m)==2){memset(f,0,sizeof(f));for(i=1;i<=n;i++){ scanf("%d",&a[i]); f[i][1]=f[i-1][1]+a[i]; } for(i=2;i<=m;i++) { for(j=i;j<=n;j++) { tmp=9999999; for(k=i;k<j;k++) { maxt=max(f[k][i-1],f[j][1]-f[k][1]); if(tmp>maxt) tmp=maxt;}f[j][i]=tmp;}}printf("%d\n",f[n][m]);}return 0;}
0 0
- 最小m段和(DP)
- 最小m段和dp
- 【dp】最小m段和问题
- 最小m段和
- 最小m段和
- 最小m段和
- 最小m段和
- 最小m段和问题
- 最小m段和问题
- 最小M段和问题
- 最小m段和问题
- 最小m段和问题
- 最小m段和问题
- 最小m段和问题
- 最小m段和问题
- 最小m段和问题
- 最小m段和问题
- 算法 最小M段和问题
- OC中内存管理以及@property的关键字
- Spring mvc 原理浅析
- 《Machine Learning(Tom M. Mitchell)》读书笔记——11、第十章
- getline用法(只读取第一行字幅,待修改)
- 判断圆和矩形是否相交(非面积相交)
- 最小m段和(DP)
- Windows Server AppFabric 简介
- hdu 3987 求最小割条数最小
- codevs1010 过河卒(棋盘dp)
- Low-Rank Matrix Fitting
- 黑马程序员——高新技术1——MyEclipse
- 防盗门如何换锁芯
- Unity3D内存管理——对象池(Object Pool)
- 第十四周项目六 阅读程序(10、11)