poj3273 Monthly Expense(二分)
2015-10-23 19:17
387 查看
#include<iostream> using namespace std; int money[100005]; int n,m,low=0,high=0; bool judge(int mid) { int sum=0; int group=1; for(int i=1;i<=n;i++) { if(sum+money[i]<=mid) sum+=money[i]; else {sum=money[i]; group++; } } if(group>m) return false; else return true; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>money[i]; high+=money[i]; if(low<money[i]) low=money[i]; } int mid=(low+high)>>1; while(low<high) { if(!judge(mid)) low=mid+1; else high=mid-1; mid=(low+high)>>1; } cout<<mid<<endl; return 0; }
相关文章推荐
- 快速排序里的学问:从猜数字开始
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- Search Insert Position,Search for a Range,Pow(x, n),Sqrt(x)
- Find Minimum in Rotated Sorted Array II
- [LeetCode] Sqrt(x)
- [LeetCode] Pow(x, n)
- [LeetCode] Search Insert Position
- [LeetCode] Search for a Range
- [LeetCode] Search in Rotated Sorted Array
- PAT 1057 Stack (30)
- int sqrt(int x)
- Pow(x, n)
- Find Minimum in Rotated Sorted Array
- Divide Two Integers
- acm解题报告 HDU 2141 Can you find it?
- acm解题报告 HDU 2199 Can you solve this equation?
- acm解题报告 HDU 2899 Strange fuction
- acm解题报告 HDU 1969 Pie
- acm解题报告 HDU 1061 Rightmost Digit
- acm解题报告 POJ 2366 Sacrament of the sum