题目链接:http://poj.org/problem?id=3273

题目大意:
给出一个有n个数据的数组,将其分为连续的m份,找到一种分法,是的m份中最大一份总和最小

解题思路:

直接在答案的区间内二分查找,找到符合条件的答案。

#include <cstdio>

int main()
{
int n, m;
while (scanf("%d %d", &n, &m) != EOF)
{
int i, j;
int a[]; int left = , right = ;
for (i = ; i < n; i++)
{
scanf("%d", &a[i]);
if (left < a[i])left = a[i];
right += a[i];
} //二分答案,答案的值必然为最大值~所有数的总和之间
while (left < right)
{
int cnt = ;
int mid = (left + right) >> ; int cost = ;
for (i = ; i < n; i++) //对所二分的答案进行判断,看其是否满足题目条件
{
if (cost + a[i] > mid)
{
cost = a[i];
cnt++;
}
else
cost += a[i];
}
cnt++;
if (cnt <= m)right = mid;
else
left = mid + ;
}
printf("%d\n", right);
}
return ;
}

2018-05-13

POJ 3273-Monthly Expense 求分组和的最小的最大值【二分答案】的更多相关文章

  1. POJ 3273 Monthly Expense(二分查找+边界条件)

    POJ 3273 Monthly Expense 此题与POJ3258有点类似,一开始把判断条件写错了,wa了两次,二分查找可以有以下两种: ){ mid=(lb+ub)/; if(C(mid)< ...

  2. 二分搜索 POJ 3273 Monthly Expense

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

  3. POJ 3273 Monthly Expense二分查找[最小化最大值问题]

    POJ 3273 Monthly Expense二分查找(最大值最小化问题) 题目:Monthly Expense Description Farmer John is an astounding a ...

  4. poj 3273 Monthly Expense (二分搜索,最小化最大值)

    题目:http://poj.org/problem?id=3273 思路:通过定义一个函数bool can(int mid):=划分后最大段和小于等于mid(即划分后所有段和都小于等于mid) 这样我 ...

  5. [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)

    Monthly Expense Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14158   Accepted: 5697 ...

  6. POJ 3273 Monthly Expense(二分答案)

    Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36628 Accepted: 13620 Des ...

  7. POJ 3273 Monthly Expense 【二分答案】

    题意:给出n天的花费,需要将这n天的花费分成m组,使得每份的和尽量小,求出这个最小的和 看题目看了好久不懂题意,最后还是看了题解 二分答案,上界为这n天花费的总和,下界为这n天里面花费最多的那一天 如 ...

  8. poj 3273 Monthly Expense(贪心+二分)

    题目:http://poj.org/problem?id=3273 题意:把n个数分成m份,使每份的和尽量小,输出最大的那一个的和. 思路:二分枚举最大的和,时间复杂度为O(nlog(sum-max) ...

  9. POJ 3273 Monthly Expense 二分枚举

    题目:http://poj.org/problem?id=3273 二分枚举,据说是经典题,看了题解才做的,暂时还没有完全理解.. #include <stdio.h> #include ...

随机推荐

  1. UML 类图 说明

    继承关系用空心三角形+实线来表示 关联:就是属性 聚合: 合成:组成 依赖:作为参数存在

  2. kali linux 安装QQ

    之前在kali上尝试过Wineqq2012,显示版本过低,放弃了.最近听说crossover比wine的支持要好,再次尝试. 1.下载 https://www.codeweavers.com/ 选择d ...

  3. Docker容器数据卷

    ⒈Docker容器中数据如何持久化? ①通过commit命令使容器反向为镜像 ②以容器数据卷的方式将数据抽离 ⒉容器数据卷的作用? ①容器数据的持久化 ②容器间继承.共享数据 ⒊能干嘛? 卷就是目录或 ...

  4. python中的魔法参数:*args和**kwargs

    python中的魔法参数:*args和**kwargs def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsp ...

  5. mac使用influxdb和grafana

    mac使用influxdb和grafana influxdb安装以及配置 brew update brew install influxdb ln -sfv /usr/local/opt/influx ...

  6. java.sql.SQLException: ORA-28040: 没有匹配的验证协议(12c或者12c rac)

    1.plsql可以连接,java程序不能连接,报如下错误: 一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c ...

  7. Android Studio安装apk失败

    可能的情况 手机上已经安装了应用或者应用卸载不彻底 解决办法: adb uninstall yourpackagename 如果uninstall失败,可以考虑 clean一下Android Stud ...

  8. MFC 使用用指定USB设备串口

    在做设备串口通讯时,往往需要自动连接到想要连接的usb转串口设备上. #include <Setupapi.h> int CMFCApplication1Dlg::FindUSBCOM() ...

  9. fastjson序列化排序问题

    fastjson序列化,默认是用字母排序, 那么怎么来实现按照自己定义的顺序输出,想要的json串呢? 直接上代码: import com.alibaba.fastjson.annotation.JS ...

  10. Ext.util.Format.date与Ext.Date.format区别, 转换时间戳

    在Extjs中装时间戳使用如下两种都可以: Ext.util.Format.date(time,'U'); Ext.Date.format(time, 'U'); 为了找到它们的区别,查看源代码,以E ...