POJ 3273-Monthly Expense(二分法-最小化最高花费)
来源:互联网 发布:设备分布图制作软件 编辑:程序博客网 时间:2024/05/19 04:56
Description
Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend each day over the next N (1 ≤ N ≤ 100,000) days.
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
Sample Input
7 5100400300100500101400
Sample Output
500
Hint
Source
题目意思:
解题思路:
#include<iostream>#include<cstdio>#include<iomanip>#include<cmath>#include<cstdlib>#include<cstring>#include<map>#include<algorithm>using namespace std;#define MAXN 100000int a[MAXN];int n,m,high=0,low=-1,mid;bool solve(){ int res=1,sum=0; for(int i=0; i<n; ++i) { sum+=a[i];//若干月花费总和 if(sum>=mid)//超过限额 { ++res;//分组数目 if(sum==mid) sum=0;//当前月花费计入当前组 else sum=a[i];//当前月花费计入下一组 if(i==n-1) --res;//最后一个月刚好被计入最后一组 } } if(res>m) return false; else return true;}int main(){#ifdef ONLINE_JUDGE#else freopen("F:/cb/read.txt","r",stdin); //freopen("F:/cb/out.txt","w",stdout);#endif ios::sync_with_stdio(false); cin.tie(0); cin>>n>>m; for(int i=0; i<n; ++i) { cin>>a[i]; if(a[i]>low) low=a[i];//最高的单月花费 high+=a[i];//所有花费之和 } while(low<high) { mid=0.5*(low+high); if(solve()) high=mid-1; else low=mid+1; } cout<<low<<endl; return 0;}/*7 5100400300100500101400*/
- POJ 3273-Monthly Expense(二分法-最小化最高花费)
- POJ-3273-Monthly Expense-二分法
- Monthly Expense (最大值最小化+二分法)
- POJ 3273 Monthly Expense 最大值最小 二分法
- POJ - 3273 Monthly Expense(二分搜索:最小化最大值)
- [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)
- poj 3273 Monthly Expense (二分最小化最大值)
- [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)
- POJ 3273 Monthly Expense【二分】(最大值最小化)
- POJ 3273 Monthly Expense(二分 最小化最大值)
- POJ 3273 Monthly Expense(二分,最大值最小化)
- POJ 3273 Monthly Expense (二分,最小化最大值)
- poj 3273- Monthly Expense(最大值最小化)-二分
- poj--3273 Monthly Expense(最小化最大值)
- Monthly Expense(二分法)
- Monthly Expense(二分法)
- POJ3273 Monthly Expense(正确的二分法求最小化最大值)
- poj Monthly Expense(最大值最小化)
- ubuntu10.04可用源
- 使用kafka-clients api操作Kafka
- Java中的ThreadPoolExecutor
- 远程服务器返回错误: (401)未经授权的解决办法
- C#程序将124.56转换成壹佰贰拾肆元伍角六分
- POJ 3273-Monthly Expense(二分法-最小化最高花费)
- [Android新手学习笔记09]-活动Activity启动模式
- [leetcode-二叉树层次遍历并统计每层节点数]--103. Binary Tree Zigzag Level Order Traversal
- 将youku的视频放到自己的网站上面播放
- Rendering views on the screen
- 利用百度tts 实现文字转语音(node)
- JS中的上下文this
- [NOIPOI2017]2.6日常训练解题报告
- Android插件化系列第(一)篇---Hook技术之Activity的启动过程的拦截