CF782B The Meeting Place Cannot Be Changed

题意:

The main road in Bytecity is a straight line from south to north. Conveniently, there are coordinates measured in meters from the southernmost building in north direction.

At some points on the road there are n friends, and i-th of them is standing at the point xi meters and can move with any speed no greater than vi meters per second in any of the two directions along the road: south or north.

You are to compute the minimum time needed to gather all the n friends at some point on the road. Note that the point they meet at doesn‘t need to have integer coordinate.

Input

The first line contains single integer n (2?≤?n?≤?60?000) — the number of friends.

The second line contains n integers x1,?x2,?...,?xn (1?≤?xi?≤?109) — the current coordinates of the friends, in meters.

The third line contains n integers v1,?v2,?...,?vn (1?≤?vi?≤?109) — the maximum speeds of the friends, in meters per second.

Output

Print the minimum time (in seconds) needed for all the n friends to meet at some point on the road.

Your answer will be considered correct, if its absolute or relative error isn‘t greater than 10?-6. Formally, let your answer be a, while jury‘s answer be b. Your answer will be considered correct if  holds.

Examples

input

37 1 31 2 1

output

2.000000000000

input

45 10 3 22 3 2 4

output

1.400000000000

思路:

二分,注意控制精度。

实现:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <iomanip>
 5 using namespace std;
 6 struct node
 7 {
 8     double pos;
 9     double speed;
10 };
11 node a[60005];
12 int n;
13 double minn, maxn;
14 bool check(double t)
15 {
16     minn = a[0].pos - t * a[0].speed;
17     maxn = a[0].pos + t * a[0].speed;
18     for (int i = 1; i < n; i++)
19     {
20         double tmp_l = a[i].pos - t * a[i].speed;
21         double tmp_r = a[i].pos + t * a[i].speed;
22         minn = max(minn, tmp_l);
23         maxn = min(maxn, tmp_r);
24     }
25     return maxn - minn >= 1e-7;
26 }
27
28 double solve()
29 {
30     double l = 0.0, r = 1000000005, res = 1000000005;
31     for (int i = 0; i < 10000; i++)
32     {
33         double mid = (l + r) / 2.0;
34         if (check(mid))
35         {
36             r = mid;
37             res = mid;
38         }
39         else
40         {
41             l = mid;
42         }
43     }
44     return res;
45 }
46
47 int main()
48 {
49     cin >> n;
50     for (int i = 0; i < n; i++)
51     {
52         cin >> a[i].pos;
53     }
54     for (int i = 0; i < n; i++)
55     {
56         cin >> a[i].speed;
57     }
58     cout << setprecision(7) << solve() << endl;
59     return 0;
60 }
时间: 2024-12-10 20:44:29

CF782B The Meeting Place Cannot Be Changed的相关文章

codeforces 782B The Meeting Place Cannot Be Changed+hdu 4355+hdu 2438 (三分)

B. The Meeting Place Cannot Be Changed The main road in Bytecity is a straight line from south to north. Conveniently, there are coordinates measured in meters from the southernmost building in north direction. At some points on the road there are n

codeforces 782B - The Meeting Place Cannot Be Changed

题意: 一条线上有n个人,每个人一个坐标值xi,每个人有一个最大行走速度vi,问如果要让这n个人走到线上某一个点,最少需要多少时间. 分析: 看起来是二分, 二分坐标. 二分区间变化的条件,一开始感觉是比较当前mid坐标左右人们用最快速度到达的平均时间, 后来具体写的时候感觉是比较当前mid坐标左右人们用最快速度到达的最大时间. 其实就是后者. 如果某一边的最大时间比较大的话,坐标就要向那一边偏移, 最后循环退出的条件就是在误差以内. 代码: 1 #include <set> 2 #inclu

Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)

Div1单场我从来就没上过分,这场又剧毒,半天才打出B,C挂了好几次最后还FST了,回紫了. AC:AB Rank:340 Rating:2204-71->2133 Div2.B.The Meeting Place Cannot Be Changed 题目大意:n个人,第i个人位于xi,速度为vi,找到一个点使得所有人到这个点的耗时最小,输出耗时.(n<=60000) 思路:二分答案,知道耗时后可以求出每个人能到达的区间,如果所有区间有交则合法,复杂度O(nlog). #include<

Murano Weekly Meeting 2015.11.04

Meeting time: 2015.November.4th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting summary: 1.Tagging Liberty    PIC:      Kirill Zaitsev Desc: Murano is still in Liberty 1.0.0 version. Kirill will try to tag stable branch 1.0.1 in this

[LC] 252. Meeting Rooms

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings. Example 1: Input: [[0,30],[5,10],[15,20]] Output: false Example 2: Input: [[7,10],[2,4]] Outp

【Beta】 第七次Daily Scrum Meeting

第七次meeting会议 [Beta] 第七次Daily Scrum Meeting 一.本次会议为第七次meeting会议 二.时间:10:00AM-10:20AM 地点:禹州楼 三.会议站立式照片 四.今日任务安排 成员 昨日任务 今日任务 林晓芳 重观界面问题上的美化处理 对现有的东西进行总结,主要是关于此次采用的一些方法.库等等 林清青 与其他组探讨交流进度 对于接下里的任务方向与大家探讨 陈惠 重观界面问题上的美化处理 基于现有的东西进行更深入的完善,例如,如何让闹钟提醒更人性化 郑莹

Codeforces 238E. Meeting Her 图论+记忆化搜索

大意: 有一个 n 个结点的有向图,边权均为 1.Urapl 想从 a 出发去 b.有 p 个公交车公司.在每 一秒的开始,第 i 个公司的公交车随机选择一条从 s i 到 t i 的最短路径然后走这条路径.如果 一个公交车经过 Urpal 所在的交叉点,则 Urpal 可以上这辆公交车,他可以在中途任意一个结 点下车. 在任何时刻 Urpal 只知道他自己的位置和约会地点.当他上了公交车时他只知道这辆公交 车属于第几个公司.当然 Urpal 知道城市地图和每个公司的 (s i , t i ).

HDU 4311 Meeting point-1 &amp;&amp; HDU 4312 Meeting point-2

这俩个题  题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a(xa,yb),b(xb,yb)的曼哈顿距离是abs(xa-xb)+abs(ya-yb): 看的出来这个距离和x,y 都有关,但是X,Y并不相互影响,所以可以分开计算这样,分开计算的好处如下: 如果 只给一个维度的坐标系 ,我们是不可以再什么养的复杂度的时间内处理出来呢? 大难还是很好想的先排序一下,会发现

【beta】阶段 第六次 Scrum Meeting

每日任务 1.本次会议为第六次 Meeting会议: 2.本次会议在周六上午大课间,在陆大楼召开,召开本次会议为15分钟. 一.今日站立式会议照片 二.每个人的工作 (有work item 的ID) 队员 昨天已经完成的工作 今天计划完成的工作   ·何琴琴 制定接下来两天的计划和博客的编写 督促小组成员完成任务,召开会分析各工作的进展情况 · 吴世荣 配合研究人员对界面进行优化 分析昨天情况,提出改善意见 ·翁彬妹 整体项目的简单测试 对各功能进行分类测试 · 陈建章 继续完成新功能的研发,开