C. Discrete Acceleration(浮点二分)

news2025/7/15 1:20:56

Problem - 1408C - Codeforces

 题意:
 

有一条长度为l米的道路。路的起点坐标为0,路的终点坐标为l。

有两辆汽车,第一辆站在路的起点,第二辆站在路的终点。它们将同时开始行驶。第一辆车将从起点开到终点,第二辆车将从终点开到起点。

最初,他们将以每秒1米的速度行驶。在不同的坐标a1,a2,...,an有n个旗子。每当两辆汽车中的任何一辆驶过一个旗子时,该汽车的速度每秒增加1米。

求汽车相遇(到达同一坐标)需要多长时间。

输入
第一行包含一个整数t(1≤t≤104):测试案例的数量。

每个测试案例的第一行包含两个整数n,l(1≤n≤105,1≤l≤109):旗帜的数量和道路的长度。

第二行包含n个整数a1,a2,...,an,按递增顺序排列(1≤a1<a2<...<an<l)。

保证所有测试案例的n之和不超过105。

输出
对于每个测试案例,打印一个单一的实数:汽车相遇所需的时间。

如果你的答案的绝对或相对误差不超过10-6,将被认为是正确的。更正式地说,如果你的答案是a,而陪审团的答案是b,如果|a-b|max(1,b)≤10-6,你的答案将被认为是正确的。

例子
输入
5
2 10
1 9
1 10
1
5 7
1 2 3 4 6
2 1000000000
413470354 982876160
9 478
1 10 25 33 239 445 453 468 477
输出
3.000000000000000
3.666666666666667
2.047619047619048
329737645.750000000000000
53.700000000000000

题解:

看到那么多小数还有求最小的基本就是浮点二分了

关键在于二分什么

我们可以二分他们相遇的地点,check他们走前半段与后半段的时间,

#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
double a[100050];
int n;
double L;
double check1(double x)
{
	double pre = 0;
	double t = 0;
	double v = 1.0;
	for(int i = 1;i <= n;i++)
	{
		if(a[i] <= x)
		{
			t += (a[i] - pre)/v;
			pre = a[i];
			v += 1.0;
		}
		else
		{
			break;
		}
	}
	t += (x - pre)/v;
	return t;
}
double check2(double x)
{
	double pre = L;
	double t = 0;
	double  v = 1.0;
	for(int i = n;i >= 1;i--)
	{
		if(a[i] >= x)
		{
			t += (pre-a[i])/v;
			pre = a[i];
			v+= 1.0;
		}
		else
		{
			break;
		}
	}
	t += (pre - x)/v;
	return t;
}
void solve()
{
	cin >> n >>L;
	for(int i = 1;i <= n;i++)
	cin >> a[i];
	double l = 0,r = L;
	while(r-l > 1e-6)
	{
		double mid = (r+l)/2.0;
		double t1 = check1(mid);
		double t2 = check2(mid);
		if(t1 < t2)
		{
			l = mid;
		}
		else
		{
			r = mid;
		}
	}
	printf("%.8lf\n",check1(l));
}
int main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}
//
//

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8440.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通俗易懂的React事件系统工作原理

前言 React 为我们提供了一套虚拟的事件系统&#xff0c;这套虚拟事件系统是如何工作的&#xff0c;笔者对源码做了一次梳理&#xff0c;整理了下面的文档供大家参考。 在 React事件介绍 中介绍了合成事件对象以及为什么提供合成事件对象&#xff0c;主要原因是因为 React 想…

【附源码】Python计算机毕业设计图书商城购物系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

MongoDB学习一:相关概念和单机部署

目录一、MongoDB 应用场景&#xff1a;二、什么时候使用MongoDB&#xff1a;三、MongoDB简介&#xff1a;四、体系结构&#xff1a;五、数据模型&#xff1a;六、MongoDB的特点&#xff1a;七、MongoDB单机部署一、MongoDB 应用场景&#xff1a; 二、什么时候使用MongoDB&#…

对FD描述符(包括inode以及三张表)的一点理解

文件描述符&#xff0c;简单来说是一个从0开始递增的非负整数。 具体来说是linux/unix对文件系统的一种底层抽象&#xff0c;这种抽象是通过三张表来实现的。 这三张表分别是&#xff1a; 1.进程级的文件描述符表&#xff1b;(文件标志位/文件指针) 2.系统级的打开文件描述…

Android Studio App开发之下载管理器DownloadManager中显示、轮询下载进度、利用POST上传文件讲解及实战(附源码)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、在通知栏显示下载进度 利用GET方式读取数据有很多缺点比如1&#xff1a;无法端点续传 一旦中途失败只能重新获取 2&#xff1a;不是真正意义上的下载操作 无法设置参数 3&#xff1a;下载过程中无法在界面上上展示下…

NAFNet(ECCV 2022)-图像修复论文解读

文章目录解决问题算法背景Simple BaselinePlain Block归一化激活函数Attention机制总结NAFNetSimpleGate替换GELUSCA替换CA总结实验应用RGB图像去噪图像去模糊RAW图像去噪结论论文: 《Simple Baselines for Image Restoration》github: https://github.com/megvii-research/NAF…

同事:这个页面的逻辑没什么能复用的,不抽组件也没什么影响吧?

前言 最近在维护同事的一个项目时&#xff0c;发现有不少单个vue文件一千余行&#xff0c;同一个文件上有倒计时、有输入信息的表单&#xff1b; 当时我就在想&#xff1a;是不是策划经常改需求或者排期紧急&#xff0c;所以没抽组件呢。 沟通过程 以下同事称为阿A 我&#…

【附源码】计算机毕业设计JAVA家庭理财管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Java基础—Document类型的变化

Document类型的变化 Document类型的变化中唯一与命名空间无关的方法是importNode()。这个方法的用途是从一个文档中取得一个节点&#xff0c;然后将其导入到另一个文档&#xff0c;使其成为这个文档结构的一部分。需要注意的是&#xff0c;每个节点都有一个ownerDocument属性&…

G1D13-Apt论文阅读fraudgitKGbookrce33-36php环境搭建

一、APT论文 今天终于把6个模型论文和一篇综述读完了&#xff01;&#xff01;&#xff01; 今天主要读了一篇论文写了个总表。发现之前读的论文都忘了&#xff0c;所以 明天要复习一下模型&#xff0c;记录在文档中&#xff0c;并完善模型对比的总表&#xff0c;并且把代码下…

[附源码]java毕业设计基于web的建筑合同管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

嵌入式FreeRTOS学习九,任务链表的构成,TICK时间中断和任务状态切换调度

一. tskTaskControlBlock 函数结构体 在tskTaskControlBlock 任务控制块结构体中&#xff0c;其中有任务状态链表和事件链表两个链表成员&#xff0c;首先介绍任务状态链表这个结构&#xff0c;这个链表通常用于管理不同状态的任务&#xff1b;通常&#xff0c;操作系统任务有…

CPU、内存、磁盘性能监控

CPU监控 网络由设备、服务器、路由器、交换机和其他网络组件组成。CPU 是网络中所有硬件设备的组成部分。它负责设备的稳定性和性能。企业严重依赖网络&#xff0c;企业硬件的处理能力决定了网络的容量。随着 CPU 功能和硬件的快速发展&#xff0c;组织必须规划其容量并监控其…

成功上岸,刚转行自学Python的小姑娘,每个月入1W+......

我是一名2020年毕业的本科生&#xff0c;大学学的专业是机械设计制造及其自动化。 在大学期间&#xff0c;觉得机械专业实在枯燥无味&#xff0c;没有一点点成就感&#xff0c;每天就是画图纸&#xff0c;测量零件&#xff0c;计算数据&#xff0c;一切都是纸上谈兵。但凡有因…

甲氧基PEG多巴胺DPA-mPEG,Dopamine-mPEG,PEG化的多巴胺具有良好的水溶性

英文名称&#xff1a;mPEG-DPA mPEG-Dopamine 中文名称&#xff1a;甲氧基-聚乙二醇-多巴胺 分子量&#xff1a;1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&#xff0c;10k 产地&#xff1a;广州 品牌&#xff1a;为华生物 存储条件&#xff1a;≤-4℃低温干燥保存…

Netty-实验

Netty应用实例-群聊系统 实例要求&#xff1a; &#xff08;1&#xff09;编写一个Netty群聊系统&#xff0c;实现服务端和客户端之间的数据简单通讯&#xff08;非阻塞&#xff09; &#xff08;2&#xff09;实现多人群聊 &#xff08;3&#xff09;服务器端&#xff1a;可…

论文阅读笔记 | 三维目标检测——PointRCNN

如有错误&#xff0c;恳请指出。 文章目录1. 背景2. 网络结构2.1 Proposal Generation2.2 Proposal Refinement3. 实验部分3.1 kitti上的测评3.2 消融实验paper&#xff1a;《PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud》文章比较复杂&#xff…

一文详解Redis企业版软件!

一、Redis企业版软件概述 Redis企业版软件&#xff08;Redis Enterprise&#xff09;是企业级的数据库软件&#xff0c;也是一款实时数据平台&#xff0c;为全球超过8500家知名企业提供实时数据服务。具有线性可扩展性、高可用性、持久性、备份和恢复、地理分布、分层内存访问…

WhatsApp群发系统-SendWS拓客系统功能后台介绍(五):WhatsApp筛号群发,群发超链

WhatsApp群发系统 基于WhatsApp进行群发功能&#xff0c;将品牌和产品推送给全世界各地的人们或者选择筛选好的用户&#xff0c;进行针对性的群发&#xff0c;提升了品牌和产品的影响力&#xff0c;让更多人了解认识品牌&#xff0c;帮助客户低成本实现WhatsApp营销精准拓客。…

windows和linux可以共用的端口连通性是否丢包测试工具paping

通常我们在系统无论是在windows还是linux&#xff0c;都会使用telnet命令来测试端口的连通性&#xff0c;但此命令只能测试是否通&#xff0c;无法测试是否有丢包或者是否有中断。paping这个工具就应用而生&#xff0c;它可以在多系统环境下进行像ping一样测试。 一、下载&…