- 题目大意

有m本书,k个人来抄,每本书有一个书本页数;求使得k个人抄完的最大页数最小,并且每个人都至少要抄一本,然后输出抄书的方案 。

- 解题思路

这是个最大值中的最小值问题,先用二分+贪心算出一个最大页数的最小值(在二分的过程中,我们对于当前考虑的值 x  划分人数的贪心过程中,我们就有flag[i]去标记,这个位置应该划分开即可)。

- 代码

#include<iostream>
#include<cstring>
using namespace std;
const int MAX = 501;
int num[MAX];
bool vis[MAX];
int t, n,g;
int find(long long a)
{long long sum = 0, count = 1;memset(vis, false, sizeof(vis));for (int i = n - 1; i >= 0; i--){sum += num[i];if (sum > a){count++;sum = num[i];vis[i] = true;}}return count;
}
int main()
{cin >> t;while (t--){int max = 0;cin >> n>>g;long long l = 0, r = 0;for (int i = 0; i < n; i++){cin >> num[i];if (num[i] > l)l = num[i];r+= num[i];}long long m;while (l < r){m = (l + r) / 2;if (find(m) <= g)r = m; else{l = m + 1;}}max=find(r);for (int i = 0; i < n&&max < g; i++){if (!vis[i]){vis[i] = true;max++;}}cout << num[0];for (int i = 1; i < n; i++){if (vis[i - 1])cout << " /";cout << ' ' << num[i];}cout << endl;}return 0;
}

  

转载于:https://www.cnblogs.com/alpacadh/p/8448888.html

C - Copying Books (POJ - 1505)相关推荐

  1. uva 714 Copying Books(二分法求最大值最小化)

    题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...

  2. 【POJ】1505 Copying Books

    此题主要采用DP思路,难点是求解"/",需要考虑划分数量不够的情况,先采用DP求解最优解,然后采用贪心求解slash.防止中间结果出错,使用了unsigned int. #incl ...

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

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

  4. POJ 1505(二分+贪心)

    题意:给一些书,这些书有不同的页数,让把这些书分成k份,必须是连续的,问这些份中页数和的最大值最小是多少. 解题思路:知道了页数和的范围,而且书都是连续的,要找到页数和最大值的最小值可以直接二分答案. ...

  5. uva 714——Copying Books

    题意:把一个m个整数的序列划分成k个连续非空的子序列,使得子序列和的最大值最小. 思路:二分.遇到最大值最小大多都二分了,让划分的子序列都不超过x,根据x来judge最终结果k个是多还是少,然后二分来 ...

  6. uva 714 Copying Books

    Thinking about it: 看完这题的时候,确实没有啥思路,看了题解才明白的.这个最小值是通过二分法先确定下来的,然后才能分组.这种思维方式超出了我的意料,我还一直朝着DP的思路走.看来我还 ...

  7. uva714 Copying Books

    题意:给你n个数,你只能刚好分成k各部分,并要求某个部分之和最大值最小化.典型二分的题目.但是这题我还是被一个小地方卡了很久.二分下届l应该取n个数里最大的数,这个很好想,但是我每次取得都很随意,直接 ...

  8. UVA714 抄书 Copying Books

    知识点:二分 首先读题就看出来这个是最小化最大值的二分,从右向左的,然后要注意的是由于是求连续子列的和,所以有可能会出现溢出,需要在相应的地方用longlong,这个题的二分不难写,就是输出很麻烦,它 ...

  9. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  10. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

最新文章

  1. android 获取手机GSM/CDMA信号信息,并获得基站信息
  2. sqoop mysql parquet_sqoop一些语法的使用
  3. oracle数据库的医院信息系统数据库升级方案,医院信息系统数据库从Oracle8i到10gR2升级的实现...
  4. 实验11 编写子程序
  5. 微型计算机天逸510s光驱,主机届的小钢炮,性能最强NAS——天逸510S Mini
  6. 斗鱼第三方开放平台2.2版使用记录
  7. python 操作oracle 执行脚本_CentOS 7定时执行python脚本
  8. 27. netstat
  9. solrCloud相关的管理命令
  10. 类的加载过程详解之过程二:Linking(链接)阶段
  11. 陕西师大计算机考研专业考408嘛,2021考研计算机408考试趋势分析
  12. Opencv项目实战:09 物体尺寸测量
  13. 永久短网址生成 可以永久使用的短链接推荐
  14. android直接gpu中取纹理数据,[Android-Camera开发]Android平台Camera实时预览数据处理即实时滤镜实现方法探讨(二)--GPUImage探讨...
  15. MIUI——添加学校邮箱到电子邮件解决方案
  16. php compress.zlib_compress/zlib(压缩/zlib)
  17. 开发人员实用的在线工具
  18. 可以免费批量Excel转PDF的在线转换工具
  19. 软件外包公司的优缺点
  20. 宏记录器 Macro Recorder 2.0 注册版

热门文章

  1. SQL Server2008函数大全(完整版)
  2. php ftp_ascii,php ftp函数
  3. python监听键盘输入_Python监听鼠标键盘事件
  4. sha256加密_比特币入门(五):比特币的加密
  5. URL跳转与webview安全浅谈
  6. Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
  7. ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd
  8. GitHub 版本控制 项目托管 02 搭建GitHub运行环境
  9. mysql多表结果合并查询
  10. 分析setting源代码获取sd卡大小