1436:数列分段II -整型二分

devtools/2024/11/16 18:33:27/

1436:数列分段II
题目来源:一本通

在这里插入图片描述
【输入样例】

5 3
4 2 4 5 1

【输出样例】

6

题意

将数列分成若干段,最多M段,求这些段中最大值中的最小值。(M<=N是M的约束)

思路

  • 最大最小问题考虑二分。由于M越大,则每段的平均值越小,即里面的最大值的越小。M作为约束,所以当分段>M作为check()函数跳出条件
  • 题目没给数据范围,所以二分区间可以选择[min(a[i]),max(sum(a[i])](当然,简单点就直接设[0,1e10],不会超时),而M作为约束条件

数据约束

注意事项

哈哈,总有一个样例过不了。检查一下代码,发现有漏洞,始终要清醒:t必须是当前子段和最大值,但当a[i]>t,sum=a[i] 然后进入下一个循环,所以就有Bug。因此需要单独判断a[i],如果>t 就不符合条件。

eg:4 1 4 5 2 很显然有数据5,当Mid=4就不可能成立

参考代码

#include<bits/stdc++.h>
using namespace std;
const int N =1000000; 
int n,m,a[N];
bool check(int t);//判断是否有m段 
int main()
{cin>>n>>m;int l = 0, r = 0;for(int i=0;i<n;i++){cin>>a[i];l = min(l,a[i]) ;r += a[i];}//二分int anwser = 0;while(l<=r){int mid = (r+l)/2;if(check(mid)) {anwser = mid;r= mid-1; //必须要区间保证是收敛的(不断缩小的) }else l = mid+1;} cout<<anwser;return 0;
}
bool check(int t){int sum = 0,ans = 1;//默认为a[0]容易有Bug 万一a[0]>m那就凉凉 for(int i=0;i<n;i++){if(a[i]>t){ //段里面的单个数据不能超过t否则出错 return false;}sum += a[i];
//		if(t ==5 ) cout<<sum<<"/"<<i<<"   "<<ans<<endl;//判断ans的情况,因为ans比m大,说明t可以分更小 ,也就是字段和不是最小值 if(sum>t){//因为t是sum里面的最大值,所以必须保证sum<=t sum = a[i];ans++;}if(ans>m){return false;}}return true;
}

http://www.ppmy.cn/devtools/134497.html

相关文章

React Native 全栈开发实战班 - 状态管理入门(Context API)

在 React Native 应用中&#xff0c;状态管理 是构建复杂用户界面的关键。随着应用规模的增长&#xff0c;组件之间的数据共享和状态同步变得越来越复杂。React 提供了多种状态管理工具&#xff0c;其中 Context API 是 React 内置的轻量级解决方案&#xff0c;适用于中小型应用…

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

使用阿里云快速搭建 DataLight 平台

使用阿里云快速搭建 DataLight 平台 本篇文章由用户 “闫哥大数据” 分享&#xff0c;B 站账号&#xff1a;https://space.bilibili.com/357944741?spm_id_from333.999.0.0 注意&#xff1a;因每个人操作顺序可能略有区别&#xff0c;整个部署流程如果出现出入&#xff0c;以…

npm install命令报错:npm ERR Could not resolve dependency npm ERR peer…

在运行前端代码下载依赖时&#xff0c;使用 npm install 命令安装依赖时遇到错误&#xff0c;报错信息如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: project0.1.0 npm ERR! Found: esli…

蓝桥杯-洛谷刷题-day3(C++)

目录 1.忽略回车的字符串输入 i.getline() ii.逐个字符的识别再输入 2.获取绝对值abs() 3.做题时的误区 4.多个变量的某一个到达判断条件 i.max() 5.[NOIP2016 提高组] 玩具谜题 i.代码 6.逻辑上的圆圈 i.有限个数n的数组 7.数组的定义 i.动态数组 1.忽略回车的字符串输…

【每日题解】3239. 最少翻转次数使二进制矩阵回文 I

给你一个 m x n 的二进制矩阵 grid 。 如果矩阵中一行或者一列从前往后与从后往前读是一样的&#xff0c;那么我们称这一行或者这一列是 回文 的。 你可以将 grid 中任意格子的值 翻转 &#xff0c;也就是将格子里的值从 0 变成 1 &#xff0c;或者从 1 变成 0 。 请你返回 …

Pytorch如何将嵌套的dict类型数据加载到GPU

在PyTorch中&#xff0c;您可以使用.to(device)方法将嵌套的字典中的所有支持的Tensor对象转移到GPU。以下是一个简单的例子 import torch# 假设您已经有了一个名为device的GPU设备对象 device torch.device("cuda:0" if torch.cuda.is_available() else "cp…

HTTP vs. HTTPS:从基础到安全的全面对比

文章目录 前言一、HTTP&#xff08;超文本传输协议&#xff09;&#xff1f;二、HTTPS&#xff08;超文本传输安全协议&#xff09;HTTP与HTTPS的核心区别使用场景对比为什么大多数网站现在都转向HTTPS&#xff1f; 总结 前言 在互联网世界中&#xff0c;HTTP和HTTPS协议是我们…