最小m段和问题 动态规划 c++含讲解

2023-05-16

最小m段和问题
给定n个整数组成的序列,现在要求将序列分割为m段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?

刚刚写了最大k乘积问题的分析,再过来看这道题,感觉差不多,如果你有兴趣的话,可以看看【动态规划】最大k乘积问题

分析-----美丽的分界线-------
1.问题讲解
5 4 3 2 1 n=5,m=3 5个整数,3段
3段子序列 (5/4/3 2 1,5 4/ 3/ 2 1,5 4 3/2 /1,5/4 3 2 /1)
子序列的和最大:(分别为6,9,12,9)
最大值达到最小即为6
2.代码讲解
solve函数是这道题的关键
f[i][j]:前i个数被分为j段,子序列的和最大值的最小值
t[i]:用来存储数字序列的数组
(1)j=1:不分段
f[i][1]=f[i-1][1]+t[i]; 前i-1个数和+第i个数
(2)j>=2
maxt=max(f[k][j-1],f[i][1]-f[k][1]);
这道题就是将数字序列整体分为两部分,第一部分前k个数分为j-1段,得到子序列的和最大值的最小值,另一部分是最后一段,f[i][1]-f[k][1]:i个数的和-前k个数的和 即为最后一段的和
然后进行比较,得到最大的和
可是呢,还有一个要求,就是要求得到的最大的和是最小的(千万不要绕晕啊,哈哈)
所以用了mint ,通过k的变化,不同的分法,得到的maxt不同,找到最小的,
随着i,j不断增加直至达到n,m即可得到答案啦

#include<bits/stdc++.h>
using namespace std;
void solve(int n,int m,int *t)
{
	int i,j,k,mint,maxt;
	int f[n][m];//n个数分为m段和大值的最小值   5 4/ 3 2 1
		f[0][1]=0; 
	//当j=1  即分为1段时
	for(i=1;i<=n;i++)
	f[i][1]=f[i-1][1]+t[i];
	//当j>=2
	for(j=2;j<=m;j++){//分为j段
		for(i=j;i<=n;i++){//前i个数
			mint=0x3f3f3f;
			for(k=1;k<i;k++){//分割点
				maxt=max(f[k][j-1],f[i][1]-f[k][1]);
				//前k个数分为j-1段得到的和最大值的最小值  最后一段k到i分为一段的和 取max   5 4/ 3 2 1
				if(mint>maxt)
				mint=maxt;//求得到的最大的和是最小的
			}
			f[i][j]=mint;//不同的k划分
		}
	}
	cout<<f[n][m]<<endl;
}
int main()
{
	int n,m;
	cin>>n>>m;
	if(n<m||n==0){
		cout<<0<<endl;
		return 0;
		}
    int t[n];
    for(int i=1;i<=n;i++)
    cin>>t[i];//数字5/4/3 2 1
    solve(n,m,t);
 } 
 

如果看不懂的话,推荐看------>这篇

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最小m段和问题 动态规划 c++含讲解 的相关文章

随机推荐

  • Windows右键自定义

    Windows右键自定义 使用注册表一 设置名称和快捷键二 设置图片三 设置调用命令四 测试 其他文件类型 xff08 目录 文件 驱动器以及一些行为 xff09 特定文件后缀只对当前用户生效二级菜单参考 使用注册表 这里先做一个对任意文件
  • Linux服务器安装图形化界面和使用Vncserver远程连接

    Linux安装图形化界面Server with GUI 输入命令查看有哪些软件可以安装 yum grouplist 安装Server with GUI yum groupinstall Server with GUI 如果服务器中安装了do
  • pip下载镜像源汇总

    为了每次不用到处查找镜像源 xff0c 所以做个经常会使用的镜像源汇总 xff1a 清华大学 xff1a https pypi tuna tsinghua edu cn simple 阿里云 xff1a http mirrors aliyu
  • [最全]解决ModuleNotFoundError: No module named ‘pip‘(Windows/Linux系统;原生环境/Conda环境)

    问题简述 在使用python的过程中遇到命令行出现ModuleNotFoundError No module named 39 pip 39 的报错 是很要命的一件事 因为pip是安装库文件命令 出了问题会导致没有办法安装需要的环境 而且使
  • tar.gz包的安装方法

    tar gz 以 tar gz为扩展名的是一种压缩文件 xff0c 在Linux和OSX下常见 xff0c Linux和OSX都可以直接解压使用这种压缩文件 windows下的WinRAR也可以使用 xff0c 相当于常见的RAR和ZIP格
  • Git常用命令及方法大全

    Git常用命令及方法大全 下面是我整理的常用 Git 命令清单 几个专用名词的译名如下 Workspace xff1a 工作区Index Stage xff1a 暂存区Repository xff1a 仓库区 xff08 或本地仓库 xff
  • debian最小化安装后的配置

    本次安装的是debian11 xff0c 安装时只选择标准工具 xff0c 安装成功后希望使用suckless系列软件 xff0c 包括dwm和st 配置内容依次为 xff1a 配置wifi 配置无线网络 在 etc network int
  • Vue中的computed和watch的区别和使用

    1 computed使用和介绍 computed计算属性 xff1a 只能对最终结果进行运算功能 xff0c 只计算一次 xff0c 具有缓存功能 xff0c 能实现计算属性与普通属性之间的双向绑定 computed的作用 1 减少模板中的
  • 【蓝桥杯省赛JavaB组真题详解】成绩统计(2020)

    题目描述 成绩统计 小蓝给学生们组织了一场考试 xff0c 卷面总分为 100 分 xff0c 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 xff0c 则称为及格 如果得分至少为 85 分 xff0c 则称为优
  • ThinkPad相机打开后显示为灰色相机斜杠不可用

    打开相机显示如图 xff1a 网络上一堆驱动啥问题导致 xff0c 有些人就火急火燎的去安装驱动啥的 xff0c 没必要 xff0c 一般来说不是驱动的问题 xff0c 只是对ThingPad操作不熟悉而已 解决办法 xff1a 点击下图电
  • 【bcrypt】go使用bcrypt进行加密和验证

    前言 项目开发过程中 xff0c 在注册这一块 xff0c 少不了对用户密码的加密 xff0c 今天使用bcrypt来实现对密码的加密和验证 bcypt加密和md5加密的不同点在于 xff0c 后者更安全 xff0c 对于同一字符串每次生成
  • 【深度学习环境01】 Windows10+WSL2迁移d盘+ Ubuntu 22

    前言 Windows10 xff1a Win系统稳定度舒适度没话说 xff0c 之前用双系统Linux实在太折腾 xff0c 我要布置环境用来开发程序的 xff0c 不是每次安装软件就要debug WSL2迁移d盘 xff1a Wsl是Wi
  • Arduino智能垃圾桶

    Arduino智能垃圾桶 硬件准备工作原理接线方式代码实物补充 舵机和超声波 调试舵机超声波传感器 这个小项目是基于Arduino设计的一款感应式智能开盖垃圾桶这个项目只要一点C语言的基础 xff0c 懂得一点点物联网知识就可以 xff0c
  • p1593 因子和

    因子和 题目描述 输入两个整数 a和 b xff0c 求 a b a b a b 的因子和 由于结果太大 xff0c 只要输出它对 9901 取模的结果 输入格式 仅一行 xff0c 为两个整数 a 和 b 输出格式 输出一行一个整数表示答
  • 如何在指定文件夹下安装python的虚拟环境

    1 什么是python中的虚拟环境 之前我们安装python第三方库时 xff0c 都是直接通过 pip install xx 包名 的方式进行安装的 xff0c 这样会使第三方库直接安装到Python系统环境中 xff0c 同时默认安装的
  • 【求救】各位大侠,救救我吧!!!

    在Sqlite数据库中 xff0c 向某整形或浮点型字段插入0 000005数值时 数据库自动将该值转变成了科学计数法表示的数字 xff0c 即使插入0 000005字符串时 xff0c 情况也一样 请问 xff1a 怎么阻止数据库的自动转
  • C# 字符提取和整數整除

    C 字符提取和整数整除练习 xff08 Console xff09 用控制台应用程序实现下列功能 xff1a 从键盘接收一个大于100的整数 xff0c 然后分别输出该整数每一位的值 xff0c 并且输出这些为相加的结果 要求分别用字符提取
  • 蓝桥杯 试题 历届真题 时间显示【第十二届】【省赛】【B组】java

    蓝桥杯 试题 历届真题 时间显示 第十二届 省赛 B组 java 问题描述 xff1a 小蓝要和朋友合作开发一个时间显示的网站 在服务器上 xff0c 朋友已经获取了当前的时间 xff0c 用一个整数表示 xff0c 值为从 1970年 1
  • 【无标题】

    借个地方发个外链图片
  • 最小m段和问题 动态规划 c++含讲解

    最小m段和问题 给定n个整数组成的序列 xff0c 现在要求将序列分割为m段 xff0c 每段子序列中的数在原序列中连续排列 如何分割才能使这m段子序列的和的最大值达到最小 xff1f 刚刚写了最大k乘积问题的分析 xff0c 再过来看这道