Description

Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的。他已经计算了他以后N(1<=N<=100,000)个工作日中每一天的花费moneyi(1<=moneyi<=10,000),他想要为他连续的M(1<=M<=N)个被叫做“清算月”的结帐时期做一个预算,每一个“清算月”包含一个工作日或更多连续的工作日,每一个工作日都仅被包含在一个“清算月”当中。 FJ的目标是安排这些“清算月”,使得每个清算月的花费中最大的那个花费达到最小,从而来决定他的月度支出限制。

Input

第一行:两个用空格隔开的整数:N和M

第2..N+1行:第i+1行包含FJ在他的第i个工作日的花费

Output

第一行:能够维持每个月农场正常运转的钱数

题解:

M<=N,如果分成<M个清算月满足要求,那么也可以分成M个清算月。

最大值最小,考虑二分。

二分一个ans。

然后模拟一下每一天尽量把钱用完,

得到一个需要的清算月数目cnt。

若cnt<=M合法,否则不合法。

思路:我们可以直到这个值必然在所有数中最大值与所有数的总和之间,那么只要再这个区间进行二分即可

AC 代码:这是一个可能超时的代码

#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m;
int a[100100];
bool mmp(int mid)
{int sum=0;int ans=1;for(int i=1;i<=n;i++){if(sum+a[i]<=mid)sum+=a[i];else{sum=a[i];ans++;}}if(ans > m)return 0;return 1;
}
int main()
{int tail,head,mid;while(scanf("%d%d",&n,&m)!=EOF){tail=0,head=1;for(int i=1;i<=n;i++){scanf("%d",&a[i]);tail+=a[i];head=max(head,a[i]);}mid=(head+tail)/2;while(tail>=head){if(mmp(mid)==0)head=mid+1;elsetail=mid-1;mid=(head+tail)/2;}printf("%d\n",mid+1);}
}

View Code

下面这是进行了一些剪支

#include <iostream>
#include <cstdio>
#define maxn 100005
using namespace std;
int cost[maxn];
int n,m;
bool judge(int x)
{                      //用来判断按当前二分值作为题目要求的最大值,所分出的堆是否合理。<br>{int s=0,t=0;for (int i=0;i<n;i++){if (cost[i]>x) return false;///高妙之处剪枝if (s+cost[i]>x){if (t>=m-1) return false;///剪枝t++;s=cost[i];}elses+=cost[i];}return true;
}
int binary(int maxx,int sum)  //二分部分
{int mid,left=maxx,right=sum;while (left<right){mid=left+(right-left)/2;if (!judge(mid)) left=mid+1;elseright=mid;}return left;
}
int main()
{int maxx=0;//二分的下界int sum=0;//二分的上界scanf("%d%d",&n,&m);for (int i=0;i<n;i++){scanf("%d",&cost[i]);maxx=max(maxx,cost[i]);sum+=cost[i];}printf("%d\n",binary(maxx,sum));return 0;
}

View Code

题后感:好好学习下什么是最小化最大值与最大化最小值吧

转载于:https://www.cnblogs.com/shuaihui520/p/8911147.html

OJ 21658::Monthly Expense(二分搜索+最小化最大值)相关推荐

  1. 最大化最小值 | | 最小化最大值

    最小化最大值. 和"河中跳房子","Agressive Cows"等最大化最小值问题正好相反的最小化最大值问题,同样用二分解决,原理基本相同,差别主要在C条件的 ...

  2. 最大化最小值和最小化最大值

    最小化最大值是为了压制优化目标中表现最突出的成分,最大化最小值为了提升优化目标中表现最差的成分 关于这两者的理解,我觉得这篇博文讲得非常好,浅显易懂又联系实际. 理解问题后,就要思考如何解决问题. 记 ...

  3. 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 spfa (存多条边示例)

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...

  4. 【算法 | 实验8】分配最小页数(数组划分和最大值最小化问题)

    文章目录 题目 问题分析与算法设计思路 思路1:类似枚举的分治(暴力) 思路2:二分法 算法实现(C++) 思路1实现 思路2实现 bug记录 1.子问题对最大值没有实现最小化 2.保存的最大值是局部 ...

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

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

  6. 二分搜索 POJ 3273 Monthly Expense

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

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

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

  8. 最小化局部边际的合并聚类算法(中篇)

    作者:钱烽 三.合并聚类算法 基于定义2所提出的相似度定义,我们在图2中给出最小化局部边际的合并聚类算法详细执行过程.首先,针对数据集中可能存在的噪声数据,我们对所有样本点进行孤立点检测.然后,作为A ...

  9. nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...

    深度学习中的优化是一项极度复杂的任务,本文是一份基础指南,旨在从数学的角度深入解读优化器. 一般而言,神经网络的整体性能取决于几个因素.通常最受关注的是网络架构,但这只是众多重要元素之一.还有一个常常 ...

  10. K-means的缺点(优化不仅仅是最小化误差)

    K-means的缺点(优化不仅仅是最小化误差) #转载时,请注明英文原作David Robinson,译者Ding Chao.# 我最近遇到一个交叉验证的问题,我认为这个给我提供了一个很好的机会去用& ...

最新文章

  1. 决策树算法(五)——处理一些特殊的分类
  2. python面向对象编程的优点-Python面向对象编程 一
  3. PyTorch基础(十)----- torch.max()方法
  4. 案例代码:springboot+springsecurity+redis设置新登录后踢出前一个登录用户
  5. 前端开发常见的浏览器兼容性问题?
  6. Codeforces Round #364 (Div. 1) (差一个后缀自动机)
  7. html间数据传送,Express框架与html之间如何进行数据传递(示例代码)
  8. 4.1_ 1_ 初识文件管理
  9. mysql8 修改密码_Mysql 8新特性之(1):账户与安全更人性化
  10. 易语言编写的档案管理系统源码_校园固定资产管理系统方案
  11. MySQL数据监控案例_zabbix 监控多实例mysql
  12. 谈谈对腾讯360之争的观感
  13. Power BI 中的货币换算
  14. dbus-1 not met问题
  15. wangeditor上传本地视频的方法
  16. 手机注册服务器异常是什么问题,ohho注册不了网络异常
  17. Cesium奇幻之旅(一)
  18. 第一单元----(4)认识编译器 源代码和可执行程序的关系
  19. S.H.E单飞不解散 Hebe率先开跑筹备个人专辑
  20. 条理清晰的入门:使用Java实现RSA加密解密

热门文章

  1. Illustrator 教程,如何在 Illustrator 中使用铅笔工具绘图?
  2. InDesign教程,如何对齐和调整对象位置?
  3. Photoshop 入门教程「4」如何使用撤消命令?
  4. 如何在 Mac 上设置和使用快捷方式?
  5. Linux基本命令之seq
  6. 孟山都公司董事长兼CEO休-格兰特出席2017年中国发展高层论坛
  7. MySQL服务器停机迁移
  8. HVM is required for this operation - Run Xen on Nested System
  9. json 生成 json字符串
  10. H2介绍 – Java嵌入式数据库