复制书稿

【题目描述】

现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三和第四本书给同一个人抄写。

现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。

【输入描述】

第一行两个整数m,k;(k≤m≤500),

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

【输出描述】

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

【样例输入】

9  3

1  2  3  4  5  6  7  8  9

【样例输出】

1 5

6 7

8 9

【数据范围及提示】

k≤m≤500

源代码:

#include<cstdio>
#include<cstring>
int m,n,k,i[501],sum[501]={0},f[501][501];
void x1(int t)
{
    int num(0),s;
    s=t;
    for (int a=t;num<=k&&t>=0;a--)
    {
        num+=i[a];
        t--;
    }
    t++;
    if (t>0)
      x1(t);
    printf("%d %d\n",t+1,s);
} //贪心倒序求解。
int main()
{
    scanf("%d%d",&m,&k);
    n=k;
    memset(f,0x3f,sizeof(f));
    for (int a=1;a<=m;a++)
    {
        scanf("%d",&i[a]);
        sum[a]=sum[a-1]+i[a];
        f[1][a]=sum[a]; //求区间和。
    }
    for (int a=2;a<=k;a++)
      for (int b=1;b<=m;b++)
        for (int c=1;c<b;c++)
        {
            int t;
            t=f[a-1][c]>sum[b]-sum[c]?f[a-1][c]:sum[b]-sum[c]; //分段取大。
            f[a][b]=f[a][b]<t?f[a][b]:t; //状态取小。
        }
    k=f[k][m];
    if (m) //考虑各种0的情况。
      x1(m);
    else
      if (n)
        for (int a=1;a<=n;a++)
          printf("0 0\n");
    return 0;
}
时间: 2024-08-01 22:48:10

复制书稿的相关文章

codevs 4310 复制书稿

4310 复制书稿 时间限制: 1 s 空间限制: 4000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一.第三和第四本书给同一个人抄写. 现在请你设计一种方案,使得复制时间最短.复制时间为抄写页数最多的人用去的时间. 输入描述 Input Description 第一行两个整数m,k;(k≤m≤

复制书稿(动规)

[动态规划]复制书稿 Time Limit:1000MS Memory Limit:65536K Description 有M本书(编号为1,2,-,M),每本书都有一个页数(分别是P1,P2,-,PM).想将每本都复制一份.将这M本书分给K个抄写员(1<=K<=M<=500),每本书只能分配给一个抄写员进行复制.每个抄写员至少被分配到一本书,而且被分配到的书必须是连续顺序的.复制工作是同时开始进行的,并且每个抄写员复制一页书的速度都是一样的.所以,复制完所有书稿所需时间取决于分配得到最

白书 第九章 例 9.24 复制书稿 题解

题目解法: 题解 白书 第九章 例 9.24 复制书稿 题解,码迷,mamicode.com

Laoj P1271 复制书稿

问题背景 动态规划入门-第20题 试题描述 现在要把m本有顺序的书分给k人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一.第三.第四本书给同一个人抄写. 现在请你设计一种方案,使得复制时间最短.复制时间为抄写页数最多的人用去的时间. 输入格式 第一行两个整数m,k:(k≤m≤500)第二行m个整数,第i个整数表示第i本书的页数. 输出格式 共k行,每行两个整数,第i行表示第i个人抄写的书的起始编号和终止编号.k行的起始

Linux 将文件夹下的所有文件复制到另一个文件里

如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件都不会被拷贝 更好的复制的方法是用"."代替"*"就好了. cp -R /home/work/.  /home/temp 将一个文件夹复制到另一个文件夹下,例如将/home下的work文件夹复制到temp下面 命令为: cp -R /home/work  /home/t

MySQL 主主复制

MySQL的主主复制就是两台 mysql 节点互为主从.搭建起来 mysql 主从,再来搭建主主复制就非常简单了. 视频链接:http://www.roncoo.com/course/view/658088f6e77541f5835b61800314083e 在原来主从的基础上做如下操作: 1.开启原从节点的 binlog 日志 2.原从节点创建读取副本的用户 3.在原主节点中让 master 指向从节点 4.在原主节点执行 start slave 命令 以上步骤即可完成主主节点的配置 下面有一

MySQL集群(二)之主主复制

前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点.接下来我将详细的给大家介绍,怎么去配置主主复制! 一.主从复制中的问题 1.1.从节点占用了主节点的自增id 环境: 主节点:zyhserver1=1.0.0.3 从节点:udzyh1=1.0.0.5 第一步:我们在主节点中创建一个数据库db_love_1,在创建一个表tb_love(里面有id自增和name属性). create database db_love_1; use d

xshell复制粘贴

用户看到这个标题肯定会觉得小编脑子坏掉了,复制粘贴不就是Ctrl+C,Ctrl+V嘛,但是在xshell却不尽然. 现象: 在xshell界面中需要用到之前的一段代码,自然是选中,熟练的键入Ctrl+C,打算复制,可是再次键入Ctrl+V时,一点反应都没有,无论怎样尝试都是一样. 原因分析: 在xshell中,Ctrl+C 代表着中断当前指令,与WIndows中的复制的快捷键重复,所以才出现了上述的现象 解决方法 1. 使用xshell中的复制粘贴快捷键 复制:Ctrl+Insert 粘贴:Sh

vim选中字符复制/剪切/粘贴

问题描述: vim 中选中指定字符,进行复制/剪切/粘贴 问题解决: 进入vim中visual模式,visual模式进入,可以有三种方式: (1)在普通模式(normal)下,直接按键 v  就可以进入默认visual模式,可以使用v+j/k/h/l 进行文本选择 注: 使用normal模式下的  v命令,进入visual模式,v+ j/k/h/l   进行文本选中 对于选中的文本进行如下按键: (1.1)d   ------ 剪切操作 (1.2)y   -------复制操作 (1.3)p