C - Copying Books (POJ - 1505)
- 题目大意
有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)相关推荐
- uva 714 Copying Books(二分法求最大值最小化)
题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...
- 【POJ】1505 Copying Books
此题主要采用DP思路,难点是求解"/",需要考虑划分数量不够的情况,先采用DP求解最优解,然后采用贪心求解slash.防止中间结果出错,使用了unsigned int. #incl ...
- (贪心5.3.2)POJ 1505 Copying Books()
/** POJ_1505.cpp** Created on: 2013年10月11日* Author: Administrator*/#include <iostream> #includ ...
- POJ 1505(二分+贪心)
题意:给一些书,这些书有不同的页数,让把这些书分成k份,必须是连续的,问这些份中页数和的最大值最小是多少. 解题思路:知道了页数和的范围,而且书都是连续的,要找到页数和最大值的最小值可以直接二分答案. ...
- uva 714——Copying Books
题意:把一个m个整数的序列划分成k个连续非空的子序列,使得子序列和的最大值最小. 思路:二分.遇到最大值最小大多都二分了,让划分的子序列都不超过x,根据x来judge最终结果k个是多还是少,然后二分来 ...
- uva 714 Copying Books
Thinking about it: 看完这题的时候,确实没有啥思路,看了题解才明白的.这个最小值是通过二分法先确定下来的,然后才能分组.这种思维方式超出了我的意料,我还一直朝着DP的思路走.看来我还 ...
- uva714 Copying Books
题意:给你n个数,你只能刚好分成k各部分,并要求某个部分之和最大值最小化.典型二分的题目.但是这题我还是被一个小地方卡了很久.二分下届l应该取n个数里最大的数,这个很好想,但是我每次取得都很随意,直接 ...
- UVA714 抄书 Copying Books
知识点:二分 首先读题就看出来这个是最小化最大值的二分,从右向左的,然后要注意的是由于是求连续子列的和,所以有可能会出现溢出,需要在相应的地方用longlong,这个题的二分不难写,就是输出很麻烦,它 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
最新文章
- android 获取手机GSM/CDMA信号信息,并获得基站信息
- sqoop mysql parquet_sqoop一些语法的使用
- oracle数据库的医院信息系统数据库升级方案,医院信息系统数据库从Oracle8i到10gR2升级的实现...
- 实验11 编写子程序
- 微型计算机天逸510s光驱,主机届的小钢炮,性能最强NAS——天逸510S Mini
- 斗鱼第三方开放平台2.2版使用记录
- python 操作oracle 执行脚本_CentOS 7定时执行python脚本
- 27. netstat
- solrCloud相关的管理命令
- 类的加载过程详解之过程二:Linking(链接)阶段
- 陕西师大计算机考研专业考408嘛,2021考研计算机408考试趋势分析
- Opencv项目实战:09 物体尺寸测量
- 永久短网址生成 可以永久使用的短链接推荐
- android直接gpu中取纹理数据,[Android-Camera开发]Android平台Camera实时预览数据处理即实时滤镜实现方法探讨(二)--GPUImage探讨...
- MIUI——添加学校邮箱到电子邮件解决方案
- php compress.zlib_compress/zlib(压缩/zlib)
- 开发人员实用的在线工具
- 可以免费批量Excel转PDF的在线转换工具
- 软件外包公司的优缺点
- 宏记录器 Macro Recorder 2.0 注册版
热门文章
- SQL Server2008函数大全(完整版)
- php ftp_ascii,php ftp函数
- python监听键盘输入_Python监听鼠标键盘事件
- sha256加密_比特币入门(五):比特币的加密
- URL跳转与webview安全浅谈
- Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
- ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd
- GitHub 版本控制 项目托管 02 搭建GitHub运行环境
- mysql多表结果合并查询
- 分析setting源代码获取sd卡大小