首页 > 其他分享 >洛谷P1182 数列分段 Section II

洛谷P1182 数列分段 Section II

时间:2024-11-13 19:33:13浏览次数:1  
标签:洛谷 数列 int Section II 最大值 分段

洛谷P1182 数列分段Section II

P1182 数列分段Section II

数列分段 Section II

题目描述

对于给定的一个长度为 的正整数数列 ,现要将其分成 )段,并要求每段连续,且每段和的最大值最小。

关于最大值最小:

例如一数列 要分成 段。

将其如下分段:

第一段和为 ,第 段和为 ,第 段和为 ,和最大值为

将其如下分段:

第一段和为 ,第 段和为 ,第 段和为 ,和最大值为

并且无论如何分段,最大值不会小于

所以可以得到要将数列 要分成 段,每段和的最大值最小为

输入格式

行包含两个正整数

行包含 个空格隔开的非负整数 ,含义如题目所述。

输出格式

一个正整数,即每段和最大值最小为多少。

样例 #1

样例输入 #1

5 3
4 2 4 5 1

样例输出 #1

6

提示

对于 的数据,

对于 的数据,

对于 的数据,, 答案不超过

题解

#include<cstdio>
#include<algorithm>
using namespace std;
int a[100100],n,m;
bool check(int x)
{
    int sum = 0, cnt = 1;
    for (int i=1; i<=n; ++i)
    {
        sum += a[i];
        if (sum>x)
        {
            cnt++;
            sum = a[i];
            if (cnt>m) return false ;
        }
    }
    return true ;
}
int main()
{
    int l = 0, r = 0, ans;
    scanf("%d%d",&n,&m);
    for (int i=1; i<=n; ++i)
    {
        scanf("%d",&a[i]);
        r += a[i]; 
        l = max(l,a[i]);
    }
    while (l<=r)    
    {
        int mid = (l+r)>>1;
        if (check(mid))
        {
            ans = mid;
            r = mid-1;
        }
        else l = mid+1;
    }
    printf("%d",ans);
    return 0;
}

 

标签:洛谷,数列,int,Section,II,最大值,分段
From: https://www.cnblogs.com/letgogogogo/p/18544622

相关文章

  • About SAMSUNG Galaxy Tab S9 and Sony Xperia 5 II
    SAMSUNGGalaxyTabS9默认音量为40%(7格),默认未开启杜比音效国行和港版可以互刷,没有任何问题国行刷为港版后送一年GoodNotes订阅、半年CLIPSTUDIOPAINT订阅固件下载地址:SM-X710/GalaxyTabS9(Wi-Fi)FirmwareDownloadSM-X710FreeDownload刷机工具下载地址:OdinFlashT......
  • 洛谷P11228的C++题解
    题目分析题目题目让我们算出机器人走步后经过了多少个不重复的点这道题不是搜索!直接按照题意模拟就行了。遇到墙就向右转,不是就直行。特别注意:向右转也是一步!一个格子最多算一遍!我们可以用一个标记数组 st,走过的点就打上标记。判断走道的点有没有打上标记,有就不......
  • 力扣刷题——3261. 统计满足 K 约束的子字符串数量 II
    看了题目的两个初始用例,感觉能用前缀和和滑动窗口来解决,前缀和设定为从下标0到当前位置所有符合条件的答案数量,于是先写了一个:vector<longlong>countKConstraintSubstrings(strings,intk,vector<vector<int>>&queries){intn=s.size();vector<longlong>pre......
  • Vue网站发布到iis后提示404页面不可访问
    vue重定向和跨域配置:https://zhuanlan.zhihu.com/p/5306882511.安装组件:URLRewrite:https://www.iis.net/downloads/microsoft/url-rewriteApplicationRequestRouting:https://www.iis.net/downloads/microsoft/application-request-routing2.新建一个web.config放到发布到文件......
  • 代码随想录算法训练营第二十五天| leetcode491.递增子序列、leetcode46.全排列、leetc
    1leetcode491.递增子序列题目链接:491.非递减子序列-力扣(LeetCode)文章链接:代码随想录视频链接:回溯算法精讲,树层去重与树枝去重|LeetCode:491.递增子序列_哔哩哔哩_bilibili思路:用之前的方法,结果翻车了,好好看视频学新技能吧1.1视频后的思路真的没想到用set来去重,还是基......
  • 洛谷题单 算法2-2 常见优化技巧
    洛谷题单算法2-2常见优化技巧单调栈单调栈最经典的应用,就是在一个数列里寻找距离元素最近的比其大/小的元素位置。模板题,寻找每个元素右边第一个比它大的元素下标。stack<int>s;for(inti=n;i>=1;i--){while(s.size()&&a[s.top()]<=a[i])s.pop();f[i]=s.......
  • 洛谷P1784.数独
    P1784数独思路这个题目最麻烦的是如何判断我们需要判断每一行,每一列,每一个九宫格这里有个小技巧,把每一行,每一列,每一个九宫格哪个数有没有被用过用数组存起来哪个数字属于哪个九宫格也可以先先存起来intid[10][10]={{0,0,0,0,0,0,0,0,0,0},{0,1,1,1,2,......
  • 代码随想录算法训练营第二十四天| leetcode93.复原IP地址、 leetcode78.子集、leetcod
    1leetcode93.复原IP地址题目链接:93.复原IP地址-力扣(LeetCode)文章链接:代码随想录视频链接:回溯算法如何分割字符串并判断是合法IP?|LeetCode:93.复原IP地址_哔哩哔哩_bilibili思路:就是将这个字符串符合要求的进行一个收集,然后使用列表存储,最后使用join函数将这个列表进行连......
  • 力扣21 打卡15 长度为 K 的子数组的能量值 II
    思路:该算法使用滑动窗口和计数器来判断每个长度为(k)的子数组是否满足连续递增的条件。遍历数组时,使用cnt记录当前连续递增的元素数。如果当前元素和前一个元素不连续递增,则将cnt重置为1,否则增加cnt。当cnt大于等于(k)时,表示找到了一个满足条件的子数组,将......
  • 洛谷题单指南-二叉堆与树状数组-P1878 舞蹈课
    原题链接:https://www.luogu.com.cn/problem/P1878题意解读:n个男女排列一行,每人舞蹈技术是ai,每次找到相邻男女舞蹈技术差值绝对值最小的一对出列,输出每对出列的人员编号。解题思路:设初始有8人编号为:12345678将12,23,34,45,56,67,78中是男女的配对编号以及a......