POJ 3273 Monthly Expense
来源:互联网 发布:微博登陆不了网络异常 编辑:程序博客网 时间:2024/06/05 06:24
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题目大意:给出N个数,将这些数分为M组,使得每一组的和都不超过某数,求使得分组条件成立的最小的数。
解题思路:二分搜索,注意分组时的判定,当大于mid时返回假,等于时返回真,小于mid时还要将下一个或几个数与当前数的和再与mid作比较。
代码如下:
#include <cstdio>const int maxn = 1000005;const int INF = 1000000;int M,N;int money[maxn];bool judge(int m){ int temp = 0; int cnt = 0; for(int i = 0;i < N;i++){ if(money[i] > m) return false; temp += money[i]; if(temp > m){ cnt++; temp = money[i]; } } return cnt < M;}int main(){ int lb,ub;while(scanf("%d %d",&N,&M) != EOF){ for(int i = 0;i < N;i++){ scanf("%d",&money[i]); if(ub < money[i]) ub = money[i]; } lb = 0; while(lb <= ub){ int mid = (lb + ub) / 2; if(judge(mid)) ub = mid - 1; else lb = mid + 1; } printf("%d\n",lb); } return 0;}
- 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
- 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
- POJ 3273 Monthly Expense
- POJ - 3273 Monthly Expense
- POJ-3273-Monthly Expense
- POJ 3273 Monthly Expense
- pat 1104. Sum of Number Segments
- malloc函数进行内存分配是在什么阶段?
- 一个简单的生产者与消费者的多线程例子(二):不让消费者或生产者无限期地等待
- 冷却算法综合排名改进模型
- Spring Boot异常:BeanCreationException:Injection of autowired dependencies failed;
- POJ 3273 Monthly Expense
- 利用virtualenv构建开发环境
- ARM汇编与C语言混合编程之汇编调用C函数
- 面向对象建模和UML建模
- 2016移动web(二)
- Python3.5安装(win)
- 如何理解“面向接口的编程”
- HDU 2553 N皇后问题(深搜)
- HDU:1789 Doing Homework again(经典贪心)