codevs3163 抄书问题2
现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比 如不能把第一、第三、第四本数给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。
(本题数据范围扩大,本题支持 O(nk) 算法)
第一行两个整数M、K;(K<=1000 M<=10000 满足 k<=m)
第二行M个整数,第i个整数表示第i本书的页数。
共K行,每行两个正整数,第i行表示第i个人抄写的书的起始编号和终止编号。K行的起始编号应该从小到大排列,如果有多解,则尽可能让前面的人少抄写。
9 3
1 2 3 4 5 6 7 8 9
1 5
6 7
8 9
详见试题
本题支持 O(nk) 算法
//注意最后的处理
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = ;
int m,k,a[maxn],rec[maxn],tmp[maxn],s[maxn];
bool check(int t){
int p = k,w = ;
for(int i = m;i >= ;i--){
if(a[i] > t) return false;
if(w + a[i] > t){
w = ;
p--;
}
if(!p) return false;
w += a[i];
tmp[p] = i;
}
for(int i = ;i <= k;i++) rec[i] = tmp[i];
return true;
}
int main(){
cin>>m>>k;
for(int i = ;i <= m;i++){
scanf("%d",&a[i]);
s[i] = s[i-] + a[i];
}
int l = ,r = s[m],mid;
while(l <= r){
mid = (l + r) >> ;
if(check(mid)){
r = mid - ;
}else{
l = mid + ;
}
}
rec[k+] = m + ;
if(rec[] != ) rec[] = ;
for(int i = ;i <= k;i++){
if(rec[i] <= rec[i-]){
rec[i] = rec[i-] + ;
continue;
}
break;
}
for(int i = ;i <= k;i++){
cout<<rec[i]<<" "<<rec[i+]-<<endl;
}
return ;
}
codevs3163 抄书问题2的更多相关文章
- 抄书(UVa714)
Description Before the invention of book-printing, it was very hard to make a copy of a book. All ...
- 抄书(B - 二分查找)
抄书 (二分查找+贪心) 提示:二分查找一般写成非递归形式 时间复杂度:O(logn) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action? ...
- C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻
C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...
- 3162 抄书问题(划分dp)
3162 抄书问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 现在要把M本有顺序的书分给K个人复制( ...
- codevs 3162 抄书问题
3162 抄书问题 题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如 ...
- codevs3162抄书问题(划分型dp)
3162 抄书问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写),每 ...
- 抄书抄博客毒害社区的Writer几时休?
曾几何时,博客园用户也渐渐分成了两类人:Writer和Coder. 何为Coder?就是认认真真写代码,平时分享工作中的一些问题.好的解决方案,或者写一些实用的原理技术文.答疑解惑的教程技术文. 何为 ...
- 抄书 Copying Books UVa 714
Copying Books 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/B 题目: Descri ...
- Context上下文对象(抄书的)
Servlet上下文 ServletContext 上下文接口 ServletContext接口 每一个应用都有唯一的一个上下文对象,即为ServletContext对象 Servl ...
随机推荐
- 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法
虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta 此方法对实体机.虚拟机安 ...
- 【转帖】嵌入式4412开发板QT5.7编译安装到arm
QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...
- [转]ASP.NET Core 之 Identity 入门(三)
本文转自:http://www.cnblogs.com/savorboard/p/aspnetcore-identity3.html 前言 在上一篇文章中,我们学习了 CookieAuthentica ...
- 【转载】Web移动端Fixed布局的解决方案
特别声明:本文转载于EFE的<Web移动端Fixed布局的解决方案>.如需转载,烦请注明原文出处:http://efe.baidu.com/blog/mobile-fixed-layout ...
- 【2016-10-31】【坚持学习】【Day16】【MongoDB】【入门 -概念】
MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...
- CF219D. Choosing Capital for Treeland [树形DP]
D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...
- 微软TFS Agile/CMMI/Scrum
二.VS Online 与 Agile/Cmmi/Scrum 介绍了背景,那就言归正传了.VS Online 和文章标题有什么关系呢? 成功注册VS Online之后,我准备创建自己的project时 ...
- Spring WebService 和 搜索
参考文章: http://blog.csdn.net/kkdelta/article/details/7290769 云计算中主流的Web服务有两种: 1.WebService.内容比较沉重,技术人员 ...
- MVC5 + EF6 + Bootstrap3 (16) 客户端验证
Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-client-side-validation.html 系列 ...
- RecyclerView的使用(二)
上篇博客讲了如何导入RecyclerView . 本章将告诉小伙伴们怎么使用RecyclerView : 第一步:在布局中使用RecyclerView并且绑定控件: 第二步:自定义Adapter:(继 ...