聪哥的工资

(money/money.in/money.out)

时限1000ms 内存256MB

题目描述

lwher: 了体验劳苦大众的生活,聪哥在暑假参加了打零工的活动,这个活动分为n个工作日,每个工作日的工资为Vi。有m个结算工钱的时间,聪哥可以自由安排这些时间,也就是说什么时候拿钱,老板说的不算,聪哥才有发言权!

(因为聪哥是土豪,他是老板的老板,你觉得老板敢给聪哥安排任务吗?所以聪哥的工作就是看心情去拿钱拿完就走人啦。。。)

聪哥不喜欢身上一次性有太多的钱,于是他想安排一下拿钱的时间,使他一次性拿的钱中最大的最小。(最后一天一定要领钱)

聪哥:晕,就是给你一个数列,让你分成m段,使各段中数字的和最大的最小

输入

第一行 2个数 n,m

接下来n行,每行一个数,代表Vi.

输出

最小的最大钱数。

样例输入

7 5

100

400

300

100

500

101

400

样例输出

500

样例说明

100 400//300 100//500//101//400//

“//”表示聪哥要去拿钱。

数据范围

20%   1<=n<=20

另 20%  1<=n<=50,Vi的和不超过1000

100%  1<=n<=100,000,m<=n,Vi<=10,000

思路

题面经过我加工一定更霸气了。。。

很明显的二分,看到最大的最小 或者 最小的最大 就是明显二分答案啊。。(这好像是吴桐当年跟我说的——)

二分答案,然后线性扫一遍判断这个答案是否符合就可以了。。。第一次写二分也没觉得太难啊

 #include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,m;
int v[];
int l,r,mid;
bool work(int large)
{
int total=; //记录划分次数
int sum=; //记录当前划分次的总和
for (int i=;i<=n;i++)
{
if (v[i]>large) { return false; }
if ((sum+v[i])>large)
{
sum=v[i];
total+=;
if (total>m) {return false;}
}
else { sum+=v[i]; }
}
if ((total+)<=m) {return true;} else {return false;}
} int main()
{
freopen("money.in","r",stdin);
freopen("money.out","w",stdout);
cin>>n>>m;
for (int i=;i<=n;i++) {cin>>v[i];r+=v[i];}
l=;
while ((r-l)>)
{
mid=(l+r)>>;
if (work(mid)==true) {r=mid;} else {l=mid+; }
}
if (work(l)==true) {cout<<l<<endl;} else {cout<<r<<endl;}
return ;
}

思路:二分

最新文章

  1. Android Studio快捷键
  2. 关于Java中的transient关键字
  3. 一次APP测试的感悟
  4. Html中各种空格的显示
  5. Redis主从自动failover
  6. [问题2015S11] 复旦高等代数 II(14级)每周一题(第十二教学周)
  7. phalcon: 查找记录(Finding Records)可用的查询设置如下:
  8. 更改windows服务的配置文件app.config
  9. 《JavaScript高级程序设计》读书笔记
  10. 转:Java同步synchronized使用
  11. 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
  12. 计算机网络 NAT
  13. flash 右键菜单隐藏与修改
  14. 大话设计模式--委托--IOS
  15. Linux之kill,pkill,killall命令
  16. Tracker-store
  17. 初探Apache Beam
  18. 【论文速读】XiangBai_CVPR2018_Rotation-Sensitive Regression for Oriented Scene Text Detection
  19. (二 -1) 天猫精灵接入Home Assistant-控制Mqtt设备
  20. global

热门文章

  1. 3170: [Tjoi2013]松鼠聚会
  2. 7- vue django restful framework 打造生鲜超市 -商品类别数据展示(上)
  3. Linux 下PHP获取服务器状态CPU、MEM使用率、磁盘使用率、IP地址获取、MAC地址获取等信息记录
  4. 排序算法合集(Java)
  5. Tricky Sum
  6. mysql不能登陆
  7. MySQL基础4-SQL简单查询(单表)
  8. WebApp开发技巧
  9. 【SCOI 2010】股票交易
  10. CSU-2034 Column Addition