【POJ 3273】 Monthly Expense (二分)

一个农民有块地 他列了个计划表 每天要花多少钱管理 但他想用m个月来管理 就想把这个计划表切割成m个月来完毕 想知道每一个月最少花费多少 每一个月的花费是这个月的花费加和 必须按计划表的顺序来

全部天中花费中最大花费作为下界 全部花费加和作为上界 二分上下界间的花费可能 找出最少每月花费就可以

代码例如以下:

#include <iostream>
#include <cstdio> using namespace std; int ned[100000],n,m; bool can(int x)//推断是否可行
{
int i,sum = 0,cnt = 1;
for(i = 0; i < n; ++i)
{
sum += ned[i];
if(sum > x)//加上这天后此划分超过x 割开
{
sum = ned[i];
cnt++;
}
}
if(cnt > m) return false;//划分块数>m 不可行
return true;
} int main()
{
//freopen("in.in","r",stdin);
int l,r,i,mid,ans;
scanf("%d %d",&n,&m);
r = l = 0;
for(i = 0; i < n; ++i)
{
scanf("%d",&ned[i]);
r += ned[i];
l = max(l,ned[i]);
} while(l <= r)
{
mid = (l+r)>>1;
if(can(mid)) //可按mid划分的时候 此题数据真水 開始二分写挫了 还过了 3 2 4 4 4这组就能卡掉
{
ans = mid;
r = mid-1;
}
else l = mid+1;
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. 【repost】JavaScript 事件模型 事件处理机制
  2. [转]Jenkins使用 管理节点
  3. HDU 1022 Train Problem I
  4. 创建第一个Android 5.0应用程序
  5. php进程的SIGBUS故障
  6. Custome Buble Data Point
  7. python中的gil是什么?
  8. BZOJ3297: [USACO2011 Open]forgot
  9. oracle sql命令行中上下左右使用
  10. FiddlerScript高级技巧---自定义Fiddler菜单
  11. poj3270Cow Sorting(置换+贪心)
  12. IntelliJ IDEA 2018.1.2 安装及汉化教程(附:下载地址)
  13. Kubernetes 实践指南之Kubernetes 的命令行工具详解
  14. 2018 ACM 网络选拔赛 青岛赛区
  15. qunee 开发清新、高效的拓扑图组件 http://www.qunee.com/
  16. ROS学习手记 - 8 编写ROS的Publisher and Subscriber
  17. android适配pad和部分手机底部虚拟按键+沉浸式状态栏
  18. ASP.NET Core WebAPI中使用JWT Bearer认证和授权
  19. hdu5139
  20. js根据对象的某一属性进行排序

热门文章

  1. Gym-101915B Ali and Wi-Fi 计算几何 求两圆交点
  2. Eclipse 连接hsqldb数据库
  3. NOIP2013T1 转圈游戏 快速幂
  4. HDFS与java API应用
  5. MAVEN学习笔记之Maven生命周期和插件简介(3)
  6. Android stroke 边框线 某一边
  7. 转载:rem的用法
  8. Co-prime HDU - 4135_容斥计数
  9. 动态规划——独立任务最优调度(Independent Task Scheduling)
  10. lsync 负载实现代码双向同步