题目链接:https://vjudge.net/problem/POJ-3273

把n个连续的数字划分成m个连续的部分,每个部分都有一个部分和(这个部分所有值加起来),现在要使划分里最大的那个部分和最小。

我用的也是二分,用二分枚举最大的部分和。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<vector>
#include<fstream>
#include<set>
#include<cstdio>
using namespace std;
#define eps 1e-8
#define ll long long
#define INF 0x3f3f3f3f
ll n,m,money[100005];
ll jug(ll mid)    //循环一次判断mid
{ll cnt=0;    //计数 ll sum=money[0];cnt++;if(sum>mid)return 0; if(cnt>m)return 0;for(int i=1;i<n;i++){if(sum+money[i]<=mid){sum+=money[i];}else{sum=money[i];if(sum>mid)return 0;cnt++;if(cnt>m)return 0;}}return 1;
}
ll two_(ll l,ll r)    //二分求最小
{ll mid,pos;while(l<=r){mid=(l+r)/2;if(jug(mid))    //判断这个mid值是否可行,
        {r=mid-1;pos=mid;    //pos记录当前值,这种写法比较保险,因为r值不一定可行,但是mid值是一定可行的
        }else{l=mid+1;pos=l;}}return pos;
}
int main()
{while(cin>>n>>m){ll sum=0;for(int i=0;i<n;i++){cin>>money[i];sum+=money[i];}cout<<two_(1,sum)<<endl;}return 0;
}

转载于:https://www.cnblogs.com/6262369sss/p/9441428.html

二分 poj 3273相关推荐

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

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

  2. 二分搜索 POJ 3273 Monthly Expense

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

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

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

  4. 【POJ - 3273 】Monthly Expense (二分,最小最大值)

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

  5. 补充一下我对 POJ 3273 的理解,这肯定是我一生写的最多的题解。。。

    题目:http://poj.org/problem?id=3273 当分成的组数越多,所有组的最大值就会越小或不变,这一点不难证明:     如果当前分成了group组,最大值是max,那么max的这 ...

  6. 寻找区域中有几个点 叉乘+二分 poj 2318

    题目来源:http://poj.org/problem?id=2318 一个 矩阵 被分成多个 区域, 然后输入 多个点, 输出 每个区域点的 个数. 当寻找点 落在某个区域时, 用二分法. #inc ...

  7. POJ - 3273 Monthly Expense(二分水题)

    题目链接:点击查看 题目大意:给出n个月的花费,要求将n个月分为连续的m个部分,让每个部分加和,取m个部分中的最大值,问最大值的最小值是多少 题目分析:直接二分答案即可,也算是完全凭自己没看题解做出来 ...

  8. I - Monthly Expense POJ - 3273

    ZYH学长非常菜,这一天他看到了这一题: 给你一个长度为N的序列,现在需要把他们切割成M个子序列(所以每一份都是连续的),使得每个子序列和均不超过某个值X 但是ZYH学长实在太菜了,这个问题困扰了他很 ...

  9. taoqick 搜索自己CSDN博客

    L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...

最新文章

  1. 汇智清华,医道生机 | 第四届清华校友三创大赛医疗健康行业论坛圆满召开
  2. 单元测试试图告诉我们关于 Activity 的什么事情:第二部分
  3. 当CDN遇上对象存储:完美!
  4. 计算机视觉 模型、学习和推理 Computer vision:models,learning and inference(免费下载)
  5. 对于局部变量_2020年对于JDK ,大家觉得哪个版本好用?
  6. Eclipse不给提示no default proposals
  7. 数组名与指向数组的指针之间的联系与区别【数据结构】
  8. 22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
  9. android input出现一个多余文本窗口 解决办法
  10. LeetCode:交替打印【1115】
  11. CUDA学习(九十四)
  12. “八戒”马德华自传《悟能》首发《西游记》师徒五人再聚首
  13. 拓端tecdat|使用R语言进行时间序列(arima,指数平滑)分析
  14. 关闭qcom soc系列手机的ramdump mode
  15. 定理在数学中的简写形式_初中数学常用的定理大全
  16. 奥巴马,别让底特律变成你的越南
  17. PIC18f46j50单片机里SPI部分的一点程序
  18. 树莓派的GPIO端口详解
  19. 结合北斗PPP_B2b 导航电文进行精密定位(PPP)
  20. openldap用法

热门文章

  1. C++ —— C++引用
  2. python怎么数据归一化_基于数据归一化以及Python实现方式
  3. 数据结构之树:树的介绍——9
  4. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)
  5. python 属性描述符
  6. 天池 在线编程 能否转换
  7. Java JDK 安装配置
  8. LeetCode 956. 最高的广告牌(DP)
  9. LeetCode 1598. 文件夹操作日志搜集器
  10. [Kesci] 预测分析 · 客户购买预测(AUC评估要使用predict_proba)