POJ3273-Monthly Expense-二分答案
2016-01-31 19:08
393 查看
FJ对以后的每一天会花mi块钱,他想把这些天分成M个时段,然后每个时段的花费和最小。
二分答案,如果加上这天还没有达到mid,就加上它。之后看分成的时段是否大于M
二分答案,如果加上这天还没有达到mid,就加上它。之后看分成的时段是否大于M
#include <cstdio> #include <algorithm> using namespace std; int n,m,money[100100]; int judge(int mid) { int group = 1,sum = 0; for(int i=0;i<n;i++) { if(sum+money[i] <= mid) { sum += money[i]; } else { group++; sum = money[i]; } } if(group > m) return false; else return true; } int main() { while(~scanf("%d%d",&n,&m)) { int low=0,high=0; for(int i=0;i<n;i++) { scanf("%d",&money[i]); high += money[i]; low = max(low,money[i]); } int mid = (low+high)/2; while(low < high) { if(!judge(mid)) low = mid+1; else high = mid-1; mid = (low+high)/2; } printf("%d\n",mid); } }
相关文章推荐
- 离线安装 Ambari Hadoop
- 习题3-1 得分 UVa1585
- 杭电2391Filthy Rich(动态规划)
- POJ3258-River Hopscotch-二分答案
- C#成神之路<2> 关于基本类对象的创建操作
- 分布式架构
- NGUI ScrollView 最彻底优化方案 加载大量(百万级)Item不卡的()
- 查找 4
- 掌握需求过程
- P27 (**) Group the elements of a set into disjoint subsets.
- P27 (**) Group the elements of a set into disjoint subsets.
- 开源库链接收藏
- delphi中webbrowser的用法
- POJ1905-Expanding Rods-二分答案
- RDLC 报表系列(四) 子报表的使用
- 学习Python语言---函数
- jvm的工作原理及调优
- 程序员思维释放(二):保持沉淀自我的心
- Bluez调试工具hcitool与gattool的使用实例
- 程序员思维释放(二):保持沉淀自我的心