算法 - 最小m段和问题
题目分析
给定n个整数组成的序列,要求将序列分割为m段,每段子序列中的数在原序列中连续排列,求使得子段和的最大值达到最小的分割方法
解题方法
状态转移方程

State[i][j]表示前i个数据分成j段得到的最大最小值,比较前k个数据的j-1分段的值与k到i的值的最大值,其中k到i的最大值为state[i][1]-state[k][1]
运行结果

代码
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_C = ;
int state[MAX_C][MAX_C];
int a[MAX_C];
int Min(int n, int m) {
int i, j, k, temp, Min;
state[][] = ;
for (i = ; i <= n; i++) {
state[i][] = state[i - ][] + a[i];
}
for (i= ; i <= n; i++) {
for (j =; j <= m; j++) {
temp = ;
for (k = ; k < i; k++) {
Min = state[i][] - state[k][] > state[k][j - ] ? (state[i][] - state[k][]) : state[k][j - ];
if (temp > Min) temp = Min;
}
state[i][j] = temp;
}
}
return state[n][m];
}
int main() {
int n = , m = ;
int temp = ;
int Max = ;
while (cin >> n&&n) {
cin >> m;
memset(a, , sizeof(a));=
for (int i = ; i <= n; i++) {
cin >> a[i];
}
memset(state, , sizeof(state));
cout << Min(n, m) << endl;
}
return ;
}
算法 - 最小m段和问题的更多相关文章
- 图论算法-最小费用最大流模板【EK;Dinic】
图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector ...
- 141.最小m 段和问题--划分性DP(特殊数据)
3278 最小m 段和问题 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定 n 个整数(不一定是正整 ...
- 详解数组分段和最大值最小问题(最小m段和问题)
数组分段和最大值最小问题(最小m段和问题) 问题描述 给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列.如何分割才能使这m段子序列的和的最大值达到最小? 清洁工:假 ...
- hdu 3395(KM算法||最小费用最大流(第二种超级巧妙))
Special Fish Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- hdu 3488(KM算法||最小费用最大流)
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- poj3041 Asteroids 匈牙利算法 最小点集覆盖问题=二分图最大匹配
/** 题目:poj3041 Asteroids 链接:http://poj.org/problem?id=3041 题意:给定n*n的矩阵,'X'表示障碍物,'.'表示空格;你有一把枪,每一发子弹可 ...
- codevs 3278 最小m 段和问题
时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定 n 个整数(不一定是正整数)组成的序列,现在要求将序列分割为 m 段,每段 ...
- POJ 3041 Asteroids(二分图 && 匈牙利算法 && 最小点覆盖)
嗯... 题目链接:http://poj.org/problem?id=3041 这道题的思想比较奇特: 把x坐标.y坐标分别看成是二分图两边的点,如果(x,y)上有行星,则将(x,y)之间连一条边, ...
- hdoj 1150 Machine Schedule【匈牙利算法+最小顶点覆盖】
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- Java 基于UDP的类似于QQ的循环通信
package Day10; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetS ...
- PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 && Linux下的ZipArchive配置开启压缩 &&搞个鸡巴毛,写少了个‘/’号,浪费了一天
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有 ...
- shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小
转自:http://blog.chinaunix.net/uid-26000296-id-3575475.html function ergodic(){ ` do "/"$fil ...
- urllib2异常处理(七)
urllib2 的异常错误处理 在我们用urlopen或opener.open方法发出一个请求时,如果urlopen或opener.open不能处理这个response,就产生错误. 这里主要说的是U ...
- OpenMP 简单的规约
▶ 简单的计算和规约 ● 第一种方法,将全局和的指针传入工作函数中进行加和,使用 critical 来控制临界区的访问 #include <stdio.h> #include <st ...
- leetcode441
public class Solution { public int ArrangeCoins(int n) { //convert int to long to prevent integer ov ...
- 小程序-Now you can provide attr "wx:key" for a "wx:for" to improve performance
转自:https://www.cnblogs.com/xpwi/p/9878871.html 小程序开发-Now you can provide attr "wx:key" for ...
- delphi Firemonkey ListView 使用参考
delphi Firemonkey ListView 使用参考 Tokyo版本 http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Customizin ...
- uvalive 7299 Boggle
Boggle is a game in which 16 dice with letters on each side are placed into a 4 × 4 grid. Players th ...
- js中获取父节点,兄弟节点及处理属性节点
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...