QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#7651. 傅里叶与交通规划

统计

题目背景

傅里叶荣升巴黎市交通部长。新官上任三把火,傅里叶决定重构巴黎市的交通系统。

题目描述

巴黎市的地图可以看成一个无限大的二维平面。傅里叶在上面修建了 $ n $ 条传送带:第 $ i $ 条传送带修建于 $ x\in[p_{i-1},p_i),y\in\mathbb R $ 的区域中。对于 $ x<p_0 $ 或者 $ x\geq p_n $ 的部分,傅里叶没有修建传送带。

当一个人处于第 $ i $ 个传送带的区域内时,他会受传送带影响强制以 $ v_i $ 单位长度每秒的速度向 $ y $ 坐标增加的方向移动。$ v_i $ 可能为负,此时其 $ y $ 坐标会以相应的速度减小。

在位于未修建传送带的区域上时,$ y $ 坐标不会受到传送带的影响。

除了受传送带带动以外,这个人自己也可以移动。为了避免在速度不同的传送带间移动时出现跌倒事故,傅里叶委托麦克斯韦设计了脚底附有钢板的鞋子,并且在传送带上安装了强力磁铁。穿上这种鞋子后,你将只能 沿着与某条坐标轴平行,可能与坐标轴同向或反向 的方向,以不超过 $ V $ 单位长度每秒的速度移动。有了这种鞋子,在从一个传送带移动到另一个传送带时,先前的速度不会被继承,这个人将立刻按照新传送带的移动速度来移动。(自然,自身的移动还是可以同步进行的)

个人的运动与传送带的运动是叠加的

在任意时刻,这个人都可以自由调整其运动的速率、方向;可以通过不断在极小间隔内切换方向以达到近似斜向移动的效果,甚至动态调整速率、方向达成近似曲线运动的效果;但是其任意时刻都只能有平行于坐标轴、不超过 $ V $ 的瞬时速率。

就算在没有铺设传送带的位置上,这个人仍然可以靠他的自由意志移动,不过还是只能沿坐标轴方向以不超过 $ V $ 单位长度每秒移动。(问就是麦克斯韦的靴子已经成为概念级装备了)

现在,傅里叶想知道他的交通系统究竟有多么伟大。因此,他向你提出了 $ q $ 组询问,每次询问如果有一个人要从 $ (x_1,y_1) $ 走到 $ (x_2,y_2) $,最少需要多少时间。因为傅里叶是唯一真神,所以他当然不会设计一个有缺陷的交通系统,因此所有的 $ v_i $ 均严格小于 $ V $,进而总是可以从一个位置走到另一处。(虽然这将会导致就算在最优情况下,通过传送带系统到达目的地的时间也无法小于原本的一半,更多的时候反倒更慢了,但是谁让他是交通部长,而你只是他手下的一个雇员呢?)

输入格式

第一行三个整数 $ n,q,V $,表示传送带数目、询问个数以及人的移动速度。

下一行 $ n+1 $ 个整数 $ p_0,p_1,\dots,p_n $,表示传送带的边界信息。

下一行 $ n $ 个整数 $ v_1,v_2,\dots,v_n $,表示每个传送带的速率。

接下来 $ q $ 行,每行四个整数 $ x_1,y_1,x_2,y_2 $,表示此次询问的起讫点。

输出格式

对于每次询问,输出一行一个实数,表示此次移动所需的最小时长,单位为秒。你需要保证输出与标准答案的相对或绝对误差不超过 $ 10^{-5} $。

  • 如果你怀疑你的代码中出现了较大的精度误差,可以尝试使用更多整数和分数以规避浮点数运算,从而减少误差。

样例数据

样例 1 输入

1 2 10
-5 5
5
-10 -20 10 20
10 20 -10 -20

样例 1 输出

4.3333333333
6.5

样例 1 解释

第一问中,上图是一种极优的行走方式。蓝色区域是传送带所在区域,在其上时我们以 $ (3,12) $ 每秒的速度移动(其中自身移动的速度是 $ (3,7) $,也即可以看作是三成时间沿着 $ x $ 轴正方向、七成时间沿着 $ y $ 轴正方向移动;在极短时间内不停切换,可以达成如上图中斜线行走的效果;$ (3,7) $ 的自身行走与 $ (0,5) $ 的传送带运转叠加成为 $ (3,12) $ 的速度向量)。

第二问中,上图是一种极优的行走方案。

需要注意的是,这两问中能达成最少时间的行走方案不止图中给出的两种。

样例 2 输入

1 4 10
-5 5
5
10 -10 10 10
10 10 10 -10
10 -50 10 50
10 50 10 -50

样例 2 输出

2
2
7.6666666667
10

样例 3 输入

5 5 10
-10 -5 0 5 10 15
9 -4 7 -6 2
-1 0 -9 -100
-7 0 7 10
9 0 -3 20
12 0 -17 -30
2 0 19 39

样例 3 输出

8.085714
1.815789
2.382353
4.987500
3.988235

样例 4~5

见下发数据。

数据范围

对于所有数据,均满足 $ n,q\leq1.5\times10^5 $,$ -5\times10^5\leq p_0<p_1<p_2<\dots<p_n\leq5\times10^5 $,$ |x_1|,|y_1|,|x_2|,|y_2|\leq5\times10^5 $,$ 0\leq|v_i|<V\leq5\times10^5 $。

Subtask 1(5%): 保证 $ n=0 $。

Subtask 2(10%): 保证 $ n,q\leq1000 $。

Subtask 3(10%): 保证对于所有询问,$ x_1=p_0,x_2=p_n $。

Subtask 4(10%): 保证所有询问的 $ x_1 $ 全都相等,所有询问的 $ x_2 $ 全都相等(但不保证 $ x_1=x_2 $)。

Subtask 5(15%): 保证 $ v_i $ 单调不降,且询问的 $ x_1\leq x_2 $。

Subtask 6(15%): 保证存在 $ i $ 使得 $ p_i=x_1=x_2 $。(但并不保证所有询问的 $ i $ 都相同)

Subtask 7(15%): 保证除 $ n,q,V $ 外,其它值都在合法范围内独立随机得到($ p $ 的随机方式是随机 $ n+1 $ 个不等的 $ [-5\times10^5,5\times10^5] $ 中的值并排序)。

Subtask 8(10%): 保证 $ n,q\leq5\times10^4 $。

Subtask 9(10%): 无特殊限制。

About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.