POJ 3273 Monthly Expense(二分答案)
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 36628 | Accepted: 13620 | 
Description
FJ wants to create a budget for a sequential set of exactly M (1 ≤ M ≤ N) fiscal periods called "fajomonths". Each of these fajomonths contains a set of 1 or more consecutive days. Every day is contained in exactly one fajomonth.
FJ's goal is to arrange the fajomonths so as to minimize the expenses of the fajomonth with the highest spending and thus determine his monthly spending limit.
Input
Lines 2..N+1: Line i+1 contains the number of dollars Farmer
John spends on the ith day
Output
with.
Sample Input
7 5
100
400
300
100
500
101
400
Sample Output
500
Hint
Source
【题意】
给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值
【分析】
套路性二分
【代码】
#include<cstdio>
#include<algorithm>
#include<iostream>
#define debug(x) cerr<<#x<<" "<<x<<'\n';
using namespace std;
inline int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
const int N=1e5+5;
int n,m,d[N];
inline bool check(int now){
	int res=1,sum=0;
	for(int i=1;i<=n;i++){
		if(sum+d[i]<=now){
			sum+=d[i];
		}else{
			sum=d[i];
			res++;
		}
	}
	return res<=m;
}
int main(){
	n=read();m=read();
	int l=0,r=0,mid=0,ans=0;
	for(int i=1;i<=n;i++) d[i]=read(),r+=d[i],l=max(l,d[i]);
	while(l<=r){
		mid=l+r>>1;
		if(check(mid)){
			ans=mid;
			r=mid-1;
		}
		else{
			l=mid+1;
		}
	}
	printf("%d\n",ans);
	return 0;
}
POJ 3273 Monthly Expense(二分答案)的更多相关文章
- POJ 3273 Monthly Expense二分查找[最小化最大值问题]
		
POJ 3273 Monthly Expense二分查找(最大值最小化问题) 题目:Monthly Expense Description Farmer John is an astounding a ...
 - POJ 3273 Monthly Expense(二分查找+边界条件)
		
POJ 3273 Monthly Expense 此题与POJ3258有点类似,一开始把判断条件写错了,wa了两次,二分查找可以有以下两种: ){ mid=(lb+ub)/; if(C(mid)< ...
 - POJ 3273 Monthly Expense 二分枚举
		
题目:http://poj.org/problem?id=3273 二分枚举,据说是经典题,看了题解才做的,暂时还没有完全理解.. #include <stdio.h> #include ...
 - poj 3273 Monthly Expense (二分)
		
//最大值最小 //天数的a[i]值是固定的 不能改变顺序 # include <algorithm> # include <string.h> # include <s ...
 - 二分搜索 POJ 3273 Monthly Expense
		
题目传送门 /* 题意:分成m个集合,使最大的集合值(求和)最小 二分搜索:二分集合大小,判断能否有m个集合. */ #include <cstdio> #include <algo ...
 - POJ 3273 Monthly Expense 【二分答案】
		
题意:给出n天的花费,需要将这n天的花费分成m组,使得每份的和尽量小,求出这个最小的和 看题目看了好久不懂题意,最后还是看了题解 二分答案,上界为这n天花费的总和,下界为这n天里面花费最多的那一天 如 ...
 - [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)
		
Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14158 Accepted: 5697 ...
 - poj 3273 Monthly Expense(贪心+二分)
		
题目:http://poj.org/problem?id=3273 题意:把n个数分成m份,使每份的和尽量小,输出最大的那一个的和. 思路:二分枚举最大的和,时间复杂度为O(nlog(sum-max) ...
 - poj 3273 Monthly Expense (二分搜索,最小化最大值)
		
题目:http://poj.org/problem?id=3273 思路:通过定义一个函数bool can(int mid):=划分后最大段和小于等于mid(即划分后所有段和都小于等于mid) 这样我 ...
 
随机推荐
- Java多线程——可阻塞的队列BlockingQueue
			
阻塞队列与Semaphore有些相似,但也不同,阻塞队列是一方存放数据,另一方释放数据,Semaphore通常则是由同一方设置和释放信号量. ArrayBlockingQueue 只有put方法和ta ...
 - 利用neon技术对矩阵旋转进行加速(2)
			
上次介绍的是顺时针旋转90度,最近用到了180度和270度,在这里记录一下. 1.利用neon技术将矩阵顺时针旋转180度: 顺时针旋转180度比顺时针旋转90度容易很多,如下图 A1 A2 A3 A ...
 - winform利用itextsharp.dll实现图片文件转换PDF格式文件
			
1.利用itextsharp.dll实现单个图片文件转换为PDF格式文件, 可以使用以下类: void ConvertJPG2PDF(string jpgfile, string pdf) { var ...
 - datetimerangepicker配置及默认时间段展示
			
<script type="text/javascript"> $(document).ready(function (){ //时间插件 $('#reportrang ...
 - Android让文本输入框默认不获取焦点
			
项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕. 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上的 ...
 - PHP文本操作
			
1. 用PHP获取文件指定行或者随机行 <?php /*** * 功能: 随机获取一个文件里的某一行 * 实现: 先将文件读进一个数组: 随机获取0~数组长度-1之间的一个随机数:以这个随机数做 ...
 - mysql出现1030 Got error 28 from storage engine解决方法
			
今天自己用 tp 写的项目报错 查了下,是磁盘临时空间不够导致 查看 my.cnf 的 tmpdir,看下指向哪个目录,修改到有空间的目录 最后发现是/var/tmp/phd/log/daemons. ...
 - tomcat 重启报错unregister mbean error javax.management.InstanceNotFoundException
			
JAVA_OPTS='-Ddruid.registerToSysProperty=true' 多个应用部署到tomcat下需要在/bin/catalina.sh下添加上面这句话 添加位置在‘cygwi ...
 - windows 环境下 ping 加时间戳 记日志
			
在c盘下面新建文件 ping.vbs 在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="&qu ...
 - android 读书笔记 1
			
四层linux 内核层library java 虚拟机frameworkapplication 四组件活动(activity), 服务(service), 广播接收器(broadcast receiv ...