当前位置: 首页 > news >正文

P1281 [CERC1998] 书的复制

目录

题目描述

输入格式

输出格式

输入输出样例

说明/提示

题目思路

不会的看代码


题目描述

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

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

输入格式

第一行两个整数 m,k。

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

输出格式

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

输入输出样例

输入 #1

9 3
1 2 3 4 5 6 7 8 9

输出 #1

1 5
6 7
8 9

说明/提示

1≤k≤m≤500。

题目思路

用二分先枚举每个人的最少用去的时间,再去用数组读取输出。

不会的看代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,i,a[200010],sum,t,w,bao,mid,b[200010],c[200100],ma,xp[200010],yp[200010],x,s,p;
bool pd(int x){int p=1,s=0;for(i=n;i>=1;i--){//从大到小 if(s+a[i]<=x){s+=a[i];}//如果符合条件(也就是小于最小时间)就让s加上当前时间。 else if(a[i]<=x)s=a[i],p++; //特判如果a[i]比x大的情况,当然数据水,删去 也能过 }return p<=m;//判断需要的人数是否满足小于m的条件。 
}
main(){ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);cin>>n>>m;memset(a,0x3f,sizeof(a));for(i=1;i<=n;i++)cin>>a[i],sum+=a[i],ma=max(ma,a[i]);//sum,ma 来确定头尾 t=ma;w=sum; while(t<=w){//二分答案,答案是最小时间 mid=(t+w)>>1;if(pd(mid))w=mid-1,bao=mid;//bao来判断最优解 else t=mid+1;}p=1;x=bao;//p是第一个,bao是最优解。 for(i=n;i>=1;i--){if(s+a[i]<=x){s+=a[i];}else if(a[i]<=x)s=a[i],xp[p]=i+1,yp[++p]=i; //用数组来输出yp是上一个的末尾位置,xp是当前这个起始位置。 }xp[p]=1;yp[1]=n;//特判 for(i=m;i>=1;i--)cout<<xp[i]<<" "<<yp[i]<<"\n";//输出 
}

http://www.lryc.cn/news/620643.html

相关文章:

  • centos部署chrome和chromedriver
  • Redis的 ​​散列(Hash)​​ 和 ​​列表(List)​​ 数据结构操作详解
  • 带环链表详解:环形链表检测与入环节点查找
  • C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
  • Java List 集合详解(ArrayList、LinkedList、Vector)
  • 上网行为安全概述和组网方案
  • 服务器的安全检测和防御技术
  • Docker部署美化SunPanel导航页
  • 从负载均衡到配置中心,Nacos内置功能一次讲清?
  • 如果超过10W并发,后台如何做负载均衡?
  • OpenManus项目中搜索引擎工具替换的技术方案解析
  • 文件上传接口接收不到文件入参
  • 新手如何高效运营亚马逊跨境电商:从传统SP广告到DeepBI智能策略
  • 飞算JavaAI:革新Java开发体验的智能助手
  • AI数据仓库的核心优势解析
  • MCPServerChart实用图表MCP快速入门指南
  • 预训练模型在机器翻译中的应用:迁移学习的优势详解
  • 介绍一下 自动驾驶 感知多任务训练模型设计
  • 自动驾驶轨迹规划算法——Apollo OpenSpace Planner
  • 【系统安装】虚拟机中安装win10IOT企业版系统记录
  • 智能制造综合实训平台数据采集物联网解决方案
  • 在启智平台使用A100对文心开源大模型Ernie4.5 0.3B微调(失败)
  • ISIS报文
  • python中的map函数
  • 初识c语言————缓冲区字符滞留
  • 计算机视觉(opencv)实战三——图像运算、cv2.add()、cv2.addWeighted()
  • 疏老师-python训练营-Day45Tensorboard使用介绍
  • Effective C++ 条款40:明智而审慎地使用多重继承
  • 给植物浇水
  • 计算机视觉CS231n学习(8)