ZYH学长非常菜,这一天他看到了这一题:

给你一个长度为N的序列,现在需要把他们切割成M个子序列(所以每一份都是连续的),使得每个子序列和均不超过某个值X

但是ZYH学长实在太菜了,这个问题困扰了他很久,你可以帮他敲个代码吗?

输入 多组输入输出
每组数据第一行是2个整数N,M(1<=M<=N<=100000),接着是N行,每行一个整数vj,1<=v[j]<=10000,表示这个序列.

输出 输出X的最小值

输入样例 7 5 100 400 300 100 500 101 400

输出样例 500

思路

二分答案,在一个Judge函数进行检验答案是否正确

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;#define ll long long
const ll mxn = 200005;
const ll INF = 0x3f3f3f3f;
ll ar[mxn];
ll n,m;bool Judge(ll mid)
{ll cnt = 0;ll sum = 0;for(ll i = 1; i <= n; i ++){sum += ar[i];if(sum == mid){sum = 0;cnt ++;}else if(sum > mid){sum = ar[i];cnt ++;}}if(sum)cnt ++;return cnt > m; //这里一定 大于不能是大于等于,因为 当 cnt == m时候我们考虑能否让这个二分的答案更小呢,所以要让 jude 函数返回假值,是 r = mid - 1,来减小上限
}int main()
{/* freopen("A.txt","r",stdin); *//* freopen("Ans.txt","w",stdout); */while(scanf("%lld %lld", &n, &m)!= EOF){ll l = 0;ll r = 0;for(ll i = 1; i <= n; i ++){scanf("%lld", &ar[i]); l = max(l, ar[i]);r += ar[i];}ll ans = l; while(l <= r) {ll mid = (l + r) >> 1;if(Judge(mid)){l = mid + 1;}else{ans = mid;r = mid - 1;}}printf("%lld\n", ans);}return 0;
}

总结:做了,好几遍都没有能懂弄明白好 二分时的调整上下限的条件,自己应该反思一下

I - Monthly Expense POJ - 3273相关推荐

  1. Monthly Expense POJ - 3273(二分最大值最小化)

    Farmer John is an astounding accounting wizard and has realized he might run out of money to run the ...

  2. Monthly Expense【二分】

    B - Monthly Expense POJ - 3273 Farmer John is an astounding accounting wizard and has realized he mi ...

  3. 二分搜索 POJ 3273 Monthly Expense

    题目传送门 1 /* 2 题意:分成m个集合,使最大的集合值(求和)最小 3 二分搜索:二分集合大小,判断能否有m个集合. 4 */ 5 #include <cstdio> 6 #incl ...

  4. 【POJ 3273】 Monthly Expense (二分)

    [POJ 3273] Monthly Expense (二分) 一个农民有块地 他列了个计划表 每天要花多少钱管理 但他想用m个月来管理 就想把这个计划表切割成m个月来完毕 想知道每一个月最少花费多少 ...

  5. USACO Monthly Expense

    洛谷 P2884 [USACO07MAR]每月的费用Monthly Expense https://www.luogu.org/problem/P2884 POJ 3273 Monthly Expen ...

  6. bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支*

    bzoj1639[Usaco2007 Mar]Monthly Expense 月度开支 题意: n天,每天有一个花费,现在要将它们分成连续的m段,要求所有段的总花费的最大值最小.求这个值.n,m≤10 ...

  7. BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )

    直接二分答案然后判断. ----------------------------------------------------------------------------- #include&l ...

  8. bzoj 1639: [Usaco2007 Mar]Monthly Expense 月度开支(二分)

    1639: [Usaco2007 Mar]Monthly Expense 月度开支 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1057  Solve ...

  9. Monthly expense(二分)

    又又又又是二分啦 憨憨桃子又来啦 题目链接:monthly expense 题目描述: Farmer John is an astounding accounting wizard and has r ...

最新文章

  1. 【工具软件】webstorm配置
  2. 06 Scratch等级考试(一级)模拟题
  3. spring 自定义标签的实现
  4. Linux运行jmeter
  5. datatables每页显示数据刷新后不变_2019北京积分落户名单数据的一些分析
  6. 容器编排技术 -- Kubernetes kubectl create 命令详解
  7. 【Spring】Spring NoSuchMethodError okhttp3.internal.platform.Platform.log(ILjava/lang/String;Ljava/lan
  8. 在pcduino开发板上写驱动控制板载LED的闪烁
  9. Linux下定时切割nginx日志并删除指定天数前的日志记录
  10. android中的progressbar,Android中ProgressBar用法简单实例
  11. 工业相机基础知识五十问
  12. CSS单位:em、rem、%、vh、vw、vmin、vmax
  13. android botton控件基本属性
  14. 利用Python自动生成及发送Excel报表
  15. JS逆向-某乎x-zse-96参数(2023-2-6)
  16. 非齐次线性方程的通解和特解
  17. 【buuctf】cscctf_2019_qual_babyheap
  18. NLP-神经语言模型:文本生成
  19. 解决Typecho站点Sitemap插件不可用问题
  20. 所有神经网络的特点及优缺点分析总结

热门文章

  1. MySQL5.7免安装版配置
  2. python中mat()函数
  3. getaddrinfo使用
  4. 2021上海各区小学梯队排名一览
  5. 自己动手写CPU(7)流水线暂停机制+乘累加累减+除法指令
  6. 如何编辑出一篇漂亮的微信公众号文章
  7. office官方推荐卸载工具--下载路径指引
  8. Unity实战 RTS3D即时战略游戏开发(一)
  9. 身份证号码中,年龄、性别的提取方法
  10. C#.NET Rsa私钥加密公钥解密