xtu oj Estrella‘s Chocolate

embedded/2024/11/26 16:23:25/

样例输入

2
5 2
5 3 2 4 1
5 3
5 3 2 4 1

样例输出

8
5

解题思路:二分法,emm……,感觉挺难想到的。

问题简化

给定一个数组,和一个值k,数组分成k段。要求这k段子段和最大值最小。求出这个值。

1、求出数组中的最大值max与数组所有值的和sum,则所求值必在max与sum之间

2、二分思想,将max与sum命为left与right,并不断测试中值,不断二分,最后得到所求值。

Num函数用来记录数组划分不大于mid的划分次数。

(1)如果Num(mid)<=m,小于说明分的段小了(mid数大了),等于继续划分,让k段子段和最大值最小,right=mid

(2)如果Num(mid)>m,大于说明分的段多了(mid数小了),left=mid+1。

参考:

二分法解数组分段和最大值最小问题

#include<stdio.h>
int a[10005]={};
int n,m,i;
int Max(int a[],int n){int i,max=0;for(i=0;i<n;i++){if(a[i]>max)max=a[i];}return max;
}
int Sum(int a[],int n){int i,sum=0;for(i=0;i<n;i++){sum+=a[i];}return sum;
}
//分成和不大于x的分段次数 
int Num(int a[],int n,int x){int num=1,total=0;for(i=0;i<n;i++){total+=a[i];if(total>x){num++;total=a[i];} } return num;
}
//二分查找
int find(int a[],int n,int m){int left=Max(a,n);int right=Sum(a,n);int mid,t;//t为划分最大值为x的划分次数 while(left<right){mid=(left+right)/2;t=Num(a,n,mid);if(t<=m){//说明mid大了 right=mid;} else{left=mid+1;}}return left;
} 
int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("%d\n",find(a,n,m));}
} 


http://www.ppmy.cn/embedded/140659.html

相关文章

20241125复盘日记

昨日最票&#xff1a; 南京化纤 滨海能源 广博股份 日播时尚 众源新材 返利科技 六国化工 丰华股份 威领股份 凯撒旅业 华扬联众 泰坦股份 高乐股份高均线选股&#xff1a; 理邦仪器高乐股份日播时尚领湃科技威领股份资金最多的票&#xff1a; 资金攻击最多的票&#xff1a; …

Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理

1. 概述 本文介绍了在spring boot框架下&#xff0c;使用validation数据校验注解&#xff0c;针对不同请求链接的前端传参数据&#xff0c;进行分层视图对象的校验&#xff0c;并通过配置全局异常处理器捕获传参校验失败异常&#xff0c;自动返回校验出错的异常数据。 2. 依赖…

RLC串联谐振,品质因数的影响

串联谐振 电路谐振是正弦稳态电路的一种特定的工作状态&#xff0c;通常发生在电感L&#xff0c;电容C和电阻R构成的电路。当高频信号通过电感或者电容的时候会产生感抗或者容抗&#xff0c;电感的感抗随着频率的增加而增加&#xff0c;电容的容抗随着频率的增加而降低。 对于串…

path.resolve、path.join

文章目录 一、path.resolve二、path.join node中的path 模块&#xff1a;用于处理文件和目录的路径的实用工具&#xff1b;经常在一些打包配置中出现 一、path.resolve __dirname属于常量&#xff0c;案例中为D:\2024\webpack\webpack-demo\src__dirname只能写在最前面&#xf…

AI写小说

从前有一个小女孩叫莉莉&#xff0c;她是个天真活泼的孩子&#xff0c;生活在一个美丽的村庄里。 莉莉的家人都非常喜欢她&#xff0c;因为她总是给人带来欢乐和笑声。她喜欢和小伙伴们一起玩耍&#xff0c;最喜欢的游戏就是躲猫猫。 一天&#xff0c;当莉莉正在和小伙伴们玩…

《Qt Creator:人工智能时代的跨平台开发利器》

《Qt Creator&#xff1a;人工智能时代的跨平台开发利器》 一、Qt Creator 简介&#xff08;一&#xff09;功能和优势&#xff08;二&#xff09;快捷键与效率提升&#xff08;三&#xff09;跨平台支持&#xff08;四&#xff09;工具介绍与使用主要特性&#xff1a;使用步骤…

GoF设计模式——结构型设计模式分析与应用

文章目录 UML图的结构主要表现为&#xff1a;继承&#xff08;抽象&#xff09;、关联 、组合或聚合 的三种关系。1. 继承&#xff08;抽象&#xff0c;泛化关系&#xff09;2. 关联3. 组合/聚合各种可能的配合&#xff1a;1. 关联后抽象2. 关联的集合3. 组合接口4. 递归聚合接…

设计模式之 模板方法模式

模板方法模式是行为型设计模式的一种。它定义了一个算法的骨架&#xff0c;并将某些步骤的实现延迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。 模板方法模式的核心在于&#xff1a; 封装算法的骨架&#xff1a;通过父类中的模板方…