题意:给一些书,这些书有不同的页数,让把这些书分成k份,必须是连续的,问这些份中页数和的最大值最小是多少。

解题思路:知道了页数和的范围,而且书都是连续的,要找到页数和最大值的最小值可以直接二分答案。。

AC:

#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;const int MAXM = 505;
int m,k;
int book[MAXM];
bool vis[MAXM];int divide(int x)
{int sum=0,cnt=1;memset(vis,false,sizeof(vis));for(int i=m;i>=1;i--){sum+=book[i];if(sum>x){cnt++;sum=book[i];vis[i]=true;}}return cnt;
}void print()
{cout<<book[1];for(int i=2;i<=m;i++){if(vis[i-1]) cout<<" /";cout<<' '<<book[i];}cout<<endl;
}int main()
{   int cas;cin>>cas;while(cas--){cin>>m>>k;int l=0,r=0,mid=0;;for(int i=1;i<=m;i++){cin>>book[i];r+=book[i];if(l<book[i]) l=book[i];}while(l<r) //二分搜索最大值中的最小值(参见刘汝佳《算法竞赛入门经典》P151){mid=(l+r)>>1;if(divide(mid)<=k) r=mid;   //这里不能是r=mid-1,原因可参见《算法竞赛入门经典》else l=mid+1;}int cnt=divide(r);for(int i=1;i<=m && cnt<k;i++)   //可能分得不足k次,那么就把前面的每一本书分给一个人超(题目要求){if(!vis[i]){vis[i]=true;cnt++;}}print();}return 0;
}

POJ 1505(二分+贪心)相关推荐

  1. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

  2. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  3. 洛谷P1182 数列分段 Section II(二分+贪心)

    题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N​,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...

  4. Drying POJ - 3104 二分

    Drying    POJ - 3104  二分      http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...

  5. POJ 3579 二分答案

    POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...

  6. POJ 2456 疯牛(二分+贪心)

    疯牛 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...

  7. POJ 2456 Aggressive cows ( 二分 贪心 )

    题意 : 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1e9) ...

  8. (贪心5.3.2)POJ 1505 Copying Books()

    /** POJ_1505.cpp** Created on: 2013年10月11日* Author: Administrator*/#include <iostream> #includ ...

  9. POJ - 2456 二分解决

    使用二分和贪心方法解决 POJ -2456 #include <iostream> #include<algorithm> #include<cstdio> #in ...

最新文章

  1. python 3.8.0 编译报错 Could not import runpy module 解决方案
  2. 如何评估深度学习模型效果?阿里工程师这么做
  3. Codeforces Round #377 (Div. 2) 732A B C D E F
  4. java请模拟出双重定时器_Java多线程基础 - osc_czmaebyq的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. muduo for v210
  6. [译]Kube Router Documentation
  7. python书籍推荐-Python爬虫开发与项目实战
  8. 前方预警!Windows Server 将默认需符合 TPM2.0,服务器商需在来年 1 月 1 日前适配相应规则...
  9. 抗住百万人直播、被联合国推荐,起底飞书技术演进之路!
  10. php开发app接口-封装类
  11. Linux 不同方法查看进程消耗CPU IO 等
  12. HDU 4664 Triangulation(SG函数)
  13. 第八章第二层交换和生成树协议(STP)
  14. Mac磁盘如何分区?教你Mac系统磁盘自由分区教程!
  15. SPSS学习 日记
  16. python接入图灵机器人_python 连接图灵机器人
  17. gnu/stubs-32.h
  18. 图片后缀名批量快速修改
  19. Firefox书签同步工具Xmarks
  20. thinkphp3.2 七牛 bad token

热门文章

  1. Spring Boot WebFlux-02——WebFlux Web CRUD 实践
  2. CSS如何实现内凹角效果 By 大漠
  3. lipo 制作通用版本 静态库
  4. .net3.5下使用LINQ递归算法实现简洁代码
  5. patent filter
  6. CMAK找不到相关编译器的问题
  7. windows 批处理程序语法
  8. linux下Eclipse+CDT开发环境配置与使用
  9. MyEclipse8 GA 下载地址 注册码 优化指南
  10. Python3使用md5