poj3273——Monthly Expense(二分)
2017-02-12 15:50
369 查看
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
Line 1: Two space-separated integers: N and M
Lines 2..N+1: Line i+1 contains the number of dollars Farmer John spends on the ith day
Output
Line 1: The smallest possible monthly limit Farmer John can afford to live with.
Sample Input
7 5
100
400
300
100
500
101
400
Sample Output
500
题意有点难懂,题解上是有n个花费,现在要分成m段。使得每一段的和最小的那个值是所有分法里最大的。
那就通过二分来找最适合的最小值,最小值太大了,分的段数少了或者也是m段,但肯定不是最小的那个
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
Line 1: Two space-separated integers: N and M
Lines 2..N+1: Line i+1 contains the number of dollars Farmer John spends on the ith day
Output
Line 1: The smallest possible monthly limit Farmer John can afford to live with.
Sample Input
7 5
100
400
300
100
500
101
400
Sample Output
500
题意有点难懂,题解上是有n个花费,现在要分成m段。使得每一段的和最小的那个值是所有分法里最大的。
那就通过二分来找最适合的最小值,最小值太大了,分的段数少了或者也是m段,但肯定不是最小的那个
#include <iostream> #include <cstring> #include <string> #include <vector> #include <queue> #include <cstdio> #include <set> #include <map> #include <cmath> #include <algorithm> #define INF 0x3f3f3f3f #define MAXN 1000005 #define Mod 10001 using namespace std; int num[MAXN]; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { int high=0,low=-INF,mid,ans; for(int i=0; i<n; ++i) { scanf("%d",&num[i]); low=max(low,num[i]); high+=num[i]; } while(low<=high) { int sum=0,cnt=1; mid=(low+high)>>1; for(int i=0; i<n; ++i) { sum+=num[i]; if(sum>mid) { sum=num[i]; cnt++; } } if(cnt<=m) { ans=mid; high=mid-1; } else low=mid+1; } printf("%d\n",ans); } 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 (二分搜索,最小化最大值)
- POJ 3273 Monthly Expense(二分查找)
- POJ 3273 Monthly Expense (二分答案)