题目描述 Description

现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比 如不能把第一、第三、第四本数给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。

(本题数据范围扩大,本题支持 O(nk) 算法)

输入描述 Input Description

第一行两个整数M、K;(K<=1000 M<=10000  满足 k<=m)

第二行M个整数,第i个整数表示第i本书的页数。

输出描述 Output Description

共K行,每行两个正整数,第i行表示第i个人抄写的书的起始编号和终止编号。K行的起始编号应该从小到大排列,如果有多解,则尽可能让前面的人少抄写。

样例输入 Sample Input

9 3

1 2 3 4 5 6 7 8 9

样例输出 Sample Output

1 5

6 7

8 9

数据范围及提示 Data Size & Hint

详见试题

本题支持 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的更多相关文章

  1. 抄书(UVa714)

    Description   Before the invention of book-printing, it was very hard to make a copy of a book. All ...

  2. 抄书(B - 二分查找)

    抄书  (二分查找+贪心) 提示:二分查找一般写成非递归形式 时间复杂度:O(logn) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action? ...

  3. C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设。抄下了记忆更深刻

    C#本质论第四版-1,抄书才能看下去,不然两三眼就看完了,一摞书都成了摆设.抄下了记忆更深刻 本书面向的读者 写作本书时,我面临的一个挑战是如何持续吸引高级开发人员眼球的同时,不因使用assembly ...

  4. 3162 抄书问题(划分dp)

    3162 抄书问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 现在要把M本有顺序的书分给K个人复制( ...

  5. codevs 3162 抄书问题

    3162 抄书问题 题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如 ...

  6. codevs3162抄书问题(划分型dp)

    3162 抄书问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写),每 ...

  7. 抄书抄博客毒害社区的Writer几时休?

    曾几何时,博客园用户也渐渐分成了两类人:Writer和Coder. 何为Coder?就是认认真真写代码,平时分享工作中的一些问题.好的解决方案,或者写一些实用的原理技术文.答疑解惑的教程技术文. 何为 ...

  8. 抄书 Copying Books UVa 714

    Copying  Books 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/B 题目: Descri ...

  9. Context上下文对象(抄书的)

    Servlet上下文 ServletContext 上下文接口    ServletContext接口    每一个应用都有唯一的一个上下文对象,即为ServletContext对象    Servl ...

随机推荐

  1. 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法

    虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta 此方法对实体机.虚拟机安 ...

  2. 【转帖】嵌入式4412开发板QT5.7编译安装到arm

    QT5.7.0+UBUNTU16.04+ARM-NONE-LINUX-GNUEABI4.8+busybox最小LINUX系统 Orandragon记录 本文转自迅为4412开发板群:http://to ...

  3. [转]ASP.NET Core 之 Identity 入门(三)

    本文转自:http://www.cnblogs.com/savorboard/p/aspnetcore-identity3.html 前言 在上一篇文章中,我们学习了 CookieAuthentica ...

  4. 【转载】Web移动端Fixed布局的解决方案

    特别声明:本文转载于EFE的<Web移动端Fixed布局的解决方案>.如需转载,烦请注明原文出处:http://efe.baidu.com/blog/mobile-fixed-layout ...

  5. 【2016-10-31】【坚持学习】【Day16】【MongoDB】【入门 -概念】

    MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...

  6. CF219D. Choosing Capital for Treeland [树形DP]

    D. Choosing Capital for Treeland time limit per test 3 seconds memory limit per test 256 megabytes i ...

  7. 微软TFS Agile/CMMI/Scrum

    二.VS Online 与 Agile/Cmmi/Scrum 介绍了背景,那就言归正传了.VS Online 和文章标题有什么关系呢? 成功注册VS Online之后,我准备创建自己的project时 ...

  8. Spring WebService 和 搜索

    参考文章: http://blog.csdn.net/kkdelta/article/details/7290769 云计算中主流的Web服务有两种: 1.WebService.内容比较沉重,技术人员 ...

  9. MVC5 + EF6 + Bootstrap3 (16) 客户端验证

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-client-side-validation.html 系列 ...

  10. RecyclerView的使用(二)

    上篇博客讲了如何导入RecyclerView . 本章将告诉小伙伴们怎么使用RecyclerView : 第一步:在布局中使用RecyclerView并且绑定控件: 第二步:自定义Adapter:(继 ...