题解报告:P1182 数列分段 Section II(二分答案)

简介: 算法

飞机票


题意:

2.png



思路:

二分答案经典题,把每段和最大值的最小枚举出来用二分去找最小且可以分的段数不超过m的。

补充一下二分答案,名如其人 ,二分的方法枚举答案,并且枚举时判断这个答案是否可行。但是,二分并不是在所有情况下都是可用的,使用二分需要满足两个条件:

1.有上下界

2.区间有单调性

二分答案应该是在一个单调闭区间上进行的。也就是说,二分答案最后得到的答案应该是一个确定值,而不是像搜索那样会出现多解。二分一般用来解决最优解问题。

#include<bits/stdc++.>
using namespace std;
const int maxn=1e5+100;
int a[maxn];
int sum[maxn];
int   main()
{
    int n,m,i,j,ans=0,max1=0;
    cin>>n>>m;
    for(i=1;i<=n;i++){
        cin>>a[i];
        sum[i]+=(sum[i-1]+a[i]);
        max1=max(max1,a[i]);
        ans+=a[i];
    }
    int l=max1,r=ans,mid,anss=0x3f3f3f3f;
    while(l<=r){
        mid=(l+r)/2;
        int cnt=0,sum1=0;
        for(i=1;i<=n;i++){
            sum1+=a[i];
            if(sum1>mid) {
              sum1=a[i],cnt++;
            }
        }
        if(sum1>mid) {
               cnt++;
        }cnt++;
        if(cnt>m){
            l=mid+1;
        }
        else {
            anss=min(mid,anss);
            r=mid-1;
        }
    }
    cout<<anss<<endl;
    return 0;
}



相关文章
|
JavaScript Windows
npm install安装太慢或者失败,可以尝试一下以下方法
npm install安装太慢或者失败,可以尝试一下以下方法
2561 1
|
Java 开发者 Python
Python中的self是什么你知道嘛?
在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。
|
Linux
Linux下安装中文输入法总结
Linux下安装中文输入法总结
4654 0
|
数据采集 存储 监控
探索数据治理的实践路径:构建高效、合规的数据生态系统
在当今这个数据驱动的时代,数据已成为企业最宝贵的资产之一,它不仅驱动着业务决策,还塑造着企业的竞争优势。然而,随着数据量的爆炸性增长和来源的多样化,如何有效管理这些数据,确保其质量、安全性及合规性,成为了企业面临的重大挑战。数据治理作为一套指导数据管理和使用的框架,其重要性日益凸显。本文将探讨推动数据治理的实践路径,旨在帮助企业构建高效、合规的数据生态系统。
|
存储 安全 Java
【面试题精讲】Queue 与 Deque 的区别
【面试题精讲】Queue 与 Deque 的区别
npm install 太慢?解决方法
npm install 太慢?解决方法
10978 0
|
Kubernetes 应用服务中间件 nginx
从零开始:使用 Kubernetes 部署 Nginx 应用
从零开始:使用 Kubernetes 部署 Nginx 应用
1122 0
|
存储 C语言
基于线性表的图书信息管理实验
基于线性表的图书信息管理实验
467 0
|
消息中间件 JavaScript 小程序
知乎高赞:Java和嵌入式,选哪个?
知乎高赞:Java和嵌入式,选哪个?