poj 3273 Monthly Expense (二分搜索,最小化最大值)
题目:http://poj.org/problem?id=3273
思路:通过定义一个函数bool can(int mid):=划分后最大段和小于等于mid(即划分后所有段和都小于等于mid)
这样我们转化为求 满足该函数的 最小mid。即最小化最大值,可以通过二分搜索来做,要注意二分的边界。WR了好几次。
代码:
#include<iostream>
#include<string>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int MAXN=100005;
int N,M,money[MAXN];
bool can(int mid) //判断值 mid 是否满足划分M段后 每段最大和的最小值小于等于mid
{
int sum=0,cnt=0;
for(int i=0;i<N-1;i++)
{
sum+=money[i];
if(sum+money[i+1]>mid) {
cnt++;
sum=0;
}
}
if(cnt>M-1)return 0;
else return 1;
}
int main()
{
while(cin>>N>>M)
{
int lhs=0,rhs=0;
for(int i=0;i<N;i++)
{
scanf("%d",&money[i]);
lhs=max(lhs,money[i]); //下届
rhs+=money[i]; //上届
}
if(M==1) {
cout<<rhs<<endl; // 不划分则输出所有元素的和
continue;
}
while(lhs<rhs)
{
int mid=(lhs+rhs)>>1;
if(can(mid))rhs=mid;
else lhs=mid+1;
}
cout<<lhs<<endl;
}
return 0;
}
poj 3273 Monthly Expense (二分搜索,最小化最大值)的更多相关文章
- poj 3273"Monthly Expense"(二分搜索+最小化最大值)
传送门 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有 N 天,第 i 天会有 a[ i ] 的花费: 将这 N 天分成 M 份,每 ...
- OJ 21658::Monthly Expense(二分搜索+最小化最大值)
Description Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的.他已经计算了他以后N(1<=N< ...
- POJ 3273 Monthly Expense(二分搜索)
Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...
- poj 3273 Monthly Expense(二分搜索之最大化最小值)
Description Farmer John ≤ moneyi ≤ ,) that he will need to spend each day over the next N ( ≤ N ≤ ,) ...
- POJ 3273 Monthly Expense二分查找[最小化最大值问题]
POJ 3273 Monthly Expense二分查找(最大值最小化问题) 题目:Monthly Expense Description Farmer John is an astounding a ...
- 二分搜索 POJ 3273 Monthly Expense
题目传送门 /* 题意:分成m个集合,使最大的集合值(求和)最小 二分搜索:二分集合大小,判断能否有m个集合. */ #include <cstdio> #include <algo ...
- POJ 3273 Monthly Expense(二分查找+边界条件)
POJ 3273 Monthly Expense 此题与POJ3258有点类似,一开始把判断条件写错了,wa了两次,二分查找可以有以下两种: ){ mid=(lb+ub)/; if(C(mid)< ...
- [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)
Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14158 Accepted: 5697 ...
- POJ 3273 Monthly Expense(二分答案)
Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36628 Accepted: 13620 Des ...
随机推荐
- 一.ubuntu14.04安装、亮度设置、显卡设置等一体化讲解
一.ubuntu14.04安装 安装步骤很简单的,相信你只要知道并且决定安装ubuntu,你就不会在安装上有问题,下载网址 http://www.ithome.com/html/soft/81539. ...
- 仿淘宝TAB切换搜索框
<div class="search"> <div id="searchBox"> <ul class="tab-bar ...
- Android dialog 不消失
最近在做Android4.0的开发,发现AlertDialog相比较以前有了较大变化,就是在触摸对话框边缘外部,对话框消失 于是研究其父类发现,可以设置这么一条属性,当然必须先AlertDialog. ...
- 【译】Optimize for mobile-移动端优化
移动端优化 由于移动设备有限的CPU处理能力,移动网络的高往返时间,以及移动应用的快速增长,对移动端的理解以及优化相对于PC端来讲变得更加重要.Page Speed Insights 现在可以让你轻松 ...
- jQueryindex();eq();利用数组来操作多个事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php or || 和 and &&
追溯代码时遇到这个坑,一直是略有懵懂,那就填了这个坑. 1 if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = BASEPATH.' ...
- PHP获取真实的网络IP
function get_client_ip() { $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_CLIENT_IP']) & ...
- PBOC2.0安全系列之—脱机认证之动态数据认证(DDA)
动态数据认证: 一,什么是动态数据认证(DDA) 由于上篇<< PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)>>已经对静态数据认证部分做了详细的分析,一些基本知识 ...
- Qt部件--烧肉
1,QSplitter
- 函数(jquery)
<script type="text/javascript"> function makeArray(arg1, arg2){ return [ this, ar ...