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

2023年庐阳区青少年信息学科普日真题- 马拉松(marathon)

题目描述
环湖马拉松全程 L 公里,已经安排了 N 个补给点,位置已经确定。由于预算增加,现在可以增设 K 个补给点。如何安排新增的补给点使得相邻补给点间最大距离最小。相邻补给点间距离也包括起点与第一个补给点之间的距离和最后一个补给点与终点之间的距离。

输入格式
输入文件名:marathon.in

第一行包括 3 个整数 L,N,K,分别表示马拉松全程长度、原有补给点的数量以及最多可以增设的补给点的数量。

第二行,N 个整数,表示原有的 N 个补给点的位置。补给点的位置用距离起点的距离表示,取值范围 (0,L)。

输出格式
输出文件名:marathon.out

一个整数,意义如题所述,表示相邻补给点间最大距离最小值。

输入输出样例

输入样例1100 2 1
70 30
输出样例130

说明
【数据范围】

0<N≤100000

0≤L≤2000000000

0≤K≤2000000000


【解析】
给个赞,有钱的捧个钱场。。支持小编继续努力下去。
标准的二分答案题,因为有关键字(最大值最小)
二分的步骤:
1:题目问什么,就对什么进行二分
2:确定对象的范围
3:枚举二分的数字是否符合题解

注意本题数据偏大,使用C的输入输出和 long long

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int L,n,k;
int a[N];
bool check(long long m){long long cnt=0;for(int i=1;i<=n;i++){int d=a[i]-a[i-1];//相邻两点之间的距离if(d>m){cnt+=ceil(d/m);}}return cnt<=k;
}
int main()
{scanf("%d%d%d",&L,&n,&k);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);a[n+1]=L;n++;long long l=0,r=L,m;while(l<r){m=(l+r)>>1;if(check(m)){r=m;}else{l=m+1;}}cout<<l;return 0;
}
http://www.lryc.cn/news/417322.html

相关文章:

  • Python笔记:socket.gaierror: [Errno -3] Temporary failure in name resolution
  • HexView 刷写文件脚本处理工具-基本功能介绍(三)-导出S19/HEX
  • 代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II
  • 学习记录第二十一天
  • 江协科技51单片机学习- p31 LCD1602液晶屏驱动
  • Android SurfaceFlinger——渲染完成帧显示(四十八)
  • ABAP+json格式数据转换时参数为空没传值
  • Flink中上游DataStream到下游DataStream的内置分区策略及自定义分区策略
  • 谁来做引领企业精益变革的舵手最合适?
  • 数据结构(java实现)——优先级队列,堆
  • 一部分优化算法
  • 图论(强联通分量)
  • LLaMA- Adapter V2: Parameter-Efficient Visual Instruction Model
  • 【爬虫实战】利用代理爬取Temu电商数据
  • 【MATLAB源码-第244期】基于MATLAB的BP神经网络语音特征信号分类,输出原信号与预测信号对比图以及预测误差和正确率。
  • HarmonyOS 习题(二)
  • 如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!
  • Delphi5实现身份证检验(DLL版)
  • linux下的C++程序
  • selfAttention 中的dk到底是什么
  • 安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi
  • 一行命令搞定内网穿透
  • C语言——扫雷游戏
  • 【LLM】-16-评估LLM-与标准答案的差距
  • WeNet 2.0:更高效的端到端语音识别工具包
  • 阿里大模型调用 = 》通义千问大语言模型
  • idea使用free流程,2024idea免费使用
  • 算法_链表专题---持续更新
  • 在Windows MFC\C++编程中,如何使用OnCopyData函数
  • 【Qt】项目代码