Codeforces Round #403 (Div. 2) B. The Meeting Place Cannot Be Changed
2017-03-05 23:47
471 查看
B. The Meeting Place Cannot Be Changed
time limit per test
5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
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
output
题意:开始每个人都在一条数轴上的某个位置上,位置大于等于1都是整数,每个人有个最大移动速度,为在数轴上面哪个点集合,所用的集合时间最短,
求这个时间,集合地点可以不是整数。
思路:如果路径对短那就是求中位数就好了。但速度不一样,这个点一定是中间某个位置,其它位置都会让结果
变大(为什么会这样,自己手动画画图,把路程线段加和就看出来了)。所以结合点跟集合时间是个有极值的函数。
至于题目中的最大速度,为了时间最少,肯定能多快就多快了,直接用最大速度算。
求极值用三分搜索就可以了,可以算是三分的模板题了。
代码如下:
time limit per test
5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
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
3 7 1 3 1 2 1
output
2.000000000000
题意:开始每个人都在一条数轴上的某个位置上,位置大于等于1都是整数,每个人有个最大移动速度,为在数轴上面哪个点集合,所用的集合时间最短,
求这个时间,集合地点可以不是整数。
思路:如果路径对短那就是求中位数就好了。但速度不一样,这个点一定是中间某个位置,其它位置都会让结果
变大(为什么会这样,自己手动画画图,把路程线段加和就看出来了)。所以结合点跟集合时间是个有极值的函数。
至于题目中的最大速度,为了时间最少,肯定能多快就多快了,直接用最大速度算。
求极值用三分搜索就可以了,可以算是三分的模板题了。
代码如下:
#include <bits/stdc++.h> const int N = 200010; using namespace std; int x , v , n; double check(double local) { double ret = 0; for (int i = 1; i <= n; i++) { double a = (double)x[i]; double vt = (double)v[i]; ret = max(ret, fabs(a - local) / vt); } return ret; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r" ,stdin); #endif while (~scanf("%d", &n)) { int tmp = 0; for (int i = 1; i <= n; i++) { scanf("%d", x + i); tmp = max(tmp, x[i]); } for (int i = 1; i <= n; i++) scanf("%d", v + i); double l = 1, r = tmp; while (r - l > 1e-6) { double mid = (l + r)/2; double midd = (l + mid)/2; double dt = check(mid); double ddt = check(midd); if (dt > ddt) r = mid; else l = midd; } printf("%.8f\n", check(l)); } return 0; }
相关文章推荐
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- codeforces The Meeting Place Cannot Be Changed
- codeforces B. The Meeting Place Cannot Be Changed【二分】
- The Meeting Place Cannot Be Changed CodeForces - 782B (二分时间)
- AC日记——The Meeting Place Cannot Be Changed codeforces 780b
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 Div. 2 B. The Meeting Place Cannot Be Changed(二分)
- CF-Round#403 Div2 B. The Meeting Place Cannot Be Changed
- 【二分】 Codeforces Round #403 (Div. 2)B. The Meeting Place Cannot Be Changed
- 【三分】Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 (Div. 2)B. The Meeting Place Cannot Be Changed
- Codeforces Round #403 div2 B. The Meeting Place Cannot Be Changed(二分)
- 【codeforces 782B】The Meeting Place Cannot Be Changed(二分)