POJ 1505(二分+贪心)
题意:给一些书,这些书有不同的页数,让把这些书分成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(二分+贪心)相关推荐
- 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)
CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...
- POJ - 2018 二分+单调子段和
依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...
- 洛谷P1182 数列分段 Section II(二分+贪心)
题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...
- Drying POJ - 3104 二分
Drying POJ - 3104 二分 http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...
- POJ 3579 二分答案
POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...
- POJ 2456 疯牛(二分+贪心)
疯牛 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...
- POJ 2456 Aggressive cows ( 二分 贪心 )
题意 : 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1e9) ...
- (贪心5.3.2)POJ 1505 Copying Books()
/** POJ_1505.cpp** Created on: 2013年10月11日* Author: Administrator*/#include <iostream> #includ ...
- POJ - 2456 二分解决
使用二分和贪心方法解决 POJ -2456 #include <iostream> #include<algorithm> #include<cstdio> #in ...
最新文章
- python 3.8.0 编译报错 Could not import runpy module 解决方案
- 如何评估深度学习模型效果?阿里工程师这么做
- Codeforces Round #377 (Div. 2) 732A B C D E F
- java请模拟出双重定时器_Java多线程基础 - osc_czmaebyq的个人空间 - OSCHINA - 中文开源技术交流社区...
- muduo for v210
- [译]Kube Router Documentation
- python书籍推荐-Python爬虫开发与项目实战
- 前方预警!Windows Server 将默认需符合 TPM2.0,服务器商需在来年 1 月 1 日前适配相应规则...
- 抗住百万人直播、被联合国推荐,起底飞书技术演进之路!
- php开发app接口-封装类
- Linux 不同方法查看进程消耗CPU IO 等
- HDU 4664 Triangulation(SG函数)
- 第八章第二层交换和生成树协议(STP)
- Mac磁盘如何分区?教你Mac系统磁盘自由分区教程!
- SPSS学习 日记
- python接入图灵机器人_python 连接图灵机器人
- gnu/stubs-32.h
- 图片后缀名批量快速修改
- Firefox书签同步工具Xmarks
- thinkphp3.2 七牛 bad token