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 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
Input
4
5 10 3 2
2 3 2 4
Output
1.400000000000
Note

In the first sample, all friends can gather at the point 5 within 2 seconds. In order to achieve this, the first friend should go south all the time at his maximum speed, while the second and the third friends should go north at their maximum speeds.

题意:x轴上有n个人  坐标为xi 最大行驶速度为vi   让这n个人走到相同一点的最短时间上多少

三分坐标  每次看到达这个坐标的最大时间 相互比较

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double eps=0.0000001;
const int N=+;
double a[N],b[N];
int n;
double fun(double x){
double ans=;
for(int i=;i<n;i++)ans=max(ans,fabs(x-a[i])/b[i]);
return ans;
}
int main(){
while(scanf("%d",&n)!=EOF){
double maxx=-1.0*INF;
double minn=1.0*INF;
for(int i=;i<n;i++){
scanf("%lf",&a[i]);
maxx=max(maxx,a[i]);
minn=min(minn,a[i]);
}
for(int i=;i<n;i++)scanf("%lf",&b[i]);
double high=maxx;
double low=minn;
while(low+eps<high){
double mid=(high+low)/2.0;
double midd=(mid+high)/2.0;
if(fun(mid)<fun(midd))high=midd;
else
low=mid;
}
printf("%.12f\n",fun(low));
}
}

hdu 4355

Party All the Time

Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5384    Accepted Submission(s): 1679

Problem Description
In
the Dark forest, there is a Fairy kingdom where all the spirits will go
together and Celebrate the harvest every year. But there is one thing
you may not know that they hate walking so much that they would prefer
to stay at home if they need to walk a long way.According to our
observation,a spirit weighing W will increase its unhappyness for S3*W units if it walks a distance of S kilometers.
Now
give you every spirit's weight and location,find the best place to
celebrate the harvest which make the sum of unhappyness of every spirit
the least.
Input
The
first line of the input is the number T(T<=20), which is the number
of cases followed. The first line of each case consists of one integer
N(1<=N<=50000), indicating the number of spirits. Then comes N
lines in the order that x[i]<=x[i+1] for all i(1<=i<N). The i-th line contains two real number : Xi,Wi, representing the location and the weight of the i-th spirit. ( |xi|<=106, 0<wi<15 )
Output
For
each test case, please output a line which is "Case #X: Y", X means the
number of the test case and Y means the minimum sum of unhappyness
which is rounded to the nearest integer.
Sample Input
1
4
0.6 5
3.9 10
5.1 7
8.4 10
Sample Output
Case #1: 832
Author
Enterpaise@UESTC_Goldfinger
Source
 我感觉这题和上面的其实很像 只是判断函数不一样而已
三分 这个 S3*W和 取最小值
#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double eps=0.00000001;
const int N=+;
int n;
struct node{
double x;
double w;
}a[N];
double fun(double x){
double ans=0.0;
for(int i=;i<n;i++){
double t=fabs(a[i].x-x);
ans=ans+t*t*t*a[i].w;
}
return ans;
}
int main(){
//cout<<eps<<endl;
int t;
scanf("%d",&t);
for(int k=;k<=t;k++){
scanf("%d",&n);
double minn=1.0*INF;
double maxx=-1.0*INF;
for(int i=;i<n;i++){
scanf("%lf%lf",&a[i].x,&a[i].w);
maxx=max(maxx,a[i].x);
minn=min(minn,a[i].x);
}
double low=minn;
double high=maxx;
double ans=low;
while(low+eps<high){
double mid=(low+high)/2.0;
double midd=(mid+high)/2.0;
// cout<<fun(mid)<<" "<<fun(midd)<<endl;
if(fun(mid)<fun(midd)){
high=midd;
}
else{
low=mid;
ans=low;
} }
printf("Case #%d: %.0f\n",k,fun(ans));
}
}

hdu   2438

Turn the corner

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3181    Accepted Submission(s): 1289

Problem Description
Mr. West bought a new car! So he is travelling around the city.
One
day he comes to a vertical corner. The street he is currently in has a
width x, the street he wants to turn to has a width y. The car has a
length l and a width d.
Can Mr. West go across the corner?
 
Input
Every line has four real numbers, x, y, l and w.
Proceed to the end of file.
Output
If he can go across the corner, print "yes". Print "no" otherwise.
Sample Input
10 6 13.5 4
10 6 14.5 4
Sample Output
yes
no
Source
其实这个是看别人的想法 后来自己画了下图
求f(a)=l*cos(a)-(x-w/cos(a))/tan(a);

只要f(a)<=y  就yes 否则 no
三分

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double PI=acos(-1.0);
const double eps=0.00000001;
double x,y,l,w;
double fun(double a){
double ans=l*cos(a)-(x-w/cos(a))/tan(a);
return ans;
}
int main(){
while(scanf("%lf%lf%lf%lf",&x,&y,&l,&w)!=EOF){
double low=0.0;
double high=PI/2.0;
if(x<w||y<w)
{
cout<<"no"<<endl;
continue;
}
while(low+eps<high){
double mid=(low+high)/2.0;
double midd=(mid+high)/2.0;
if(fun(mid)<=fun(midd)){
low=mid;
}
else
high=midd;
}
if(fun(low)<=y)cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
}

codeforces 782B The Meeting Place Cannot Be Changed+hdu 4355+hdu 2438 (三分)的更多相关文章

  1. codeforces 782B The Meeting Place Cannot Be Changed (三分)

    The Meeting Place Cannot Be Changed Problem Description The main road in Bytecity is a straight line ...

  2. Codeforces 782B The Meeting Place Cannot Be Changed(二分答案)

    题目链接 The Meeting Place Cannot Be Changed 二分答案即可. check的时候先算出每个点可到达的范围的区间,然后求并集.判断一下是否满足l <= r就好了. ...

  3. codeforces 782B - The Meeting Place Cannot Be Changed

    time limit per test 5 seconds memory limit per test 256 megabytes input standard input output standa ...

  4. CodeForces 782B The Meeting Place Cannot Be Changed (二分)

    题意:题意:给出n个人的在x轴的位置和最大速度,求n个人相遇的最短时间. 析:二分时间,然后求并集,注意精度,不然会超时. 代码如下: #pragma comment(linker, "/S ...

  5. CodeForces - 782B The Meeting Place Cannot Be Changed(精度二分)

    题意:在一维坐标轴上,给定n个点的坐标以及他们的最大移动速度,问他们能聚到某一点处的最短时间. 分析: 1.二分枚举最短时间即可. 2.通过检查当前时间下,各点的最大移动范围之间是否有交集,不断缩小搜 ...

  6. 782B. The Meeting Place Cannot Be Changed 二分 水

    Link 题意:给出$n$个坐标$x_i$,$n$个速度$v_i$问使他们相遇的最短时间是多少. 思路:首先可肯定最终相遇位置必定在区间$[0,max(x_i)]$中,二分最终位置,判断左右部分各自所 ...

  7. 782B The Meeting Place Cannot Be Changed(二分)

    链接:http://codeforces.com/problemset/problem/782/B 题意: N个点,需要找到一个点使得每个点到这个点耗时最小,每个点都同时开始,且都拥有自己的速度 题解 ...

  8. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed

    地址:http://codeforces.com/contest/782/problem/B 题目: B. The Meeting Place Cannot Be Changed time limit ...

  9. AC日记——The Meeting Place Cannot Be Changed codeforces 780b

    780B - The Meeting Place Cannot Be Changed 思路: 二分答案: 代码: #include <cstdio> #include <cstrin ...

随机推荐

  1. JS——event

    触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息: 普通浏览器支持 event(传参),IE678支持 window.event(无参),兼容写法: < ...

  2. 【译】x86程序员手册04 - 2.2数据类型

    2.2 Data Types 数据类型 Bytes, words, and doublewords are the fundamental data types (refer to Figure 2- ...

  3. Centos 修改源

    1首先备份原来的配置文件: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2下载对应版本r ...

  4. day08-字符编码

    目录 计算机基础 启动应用程序 写文本的流程 Python解释器执行文件的原理 Python解释器与文本编辑器的区别 字符编码 字符编码发生在哪三个阶段 字符编码发展史与分类 总结 Python2与P ...

  5. javascript 大数据处理方法

    随着前端的飞速发展,在浏览器端完成复杂的计算,支配并处理大量数据已经屡见不鲜.那么,如何在最小化内存消耗的前提下,高效优雅地完成复杂场景的处理,越来越考验开发者功力,也直接决定了程序的性能. 本文展现 ...

  6. 用 ilasm 反编译、修改.net dll文件

    有些.net dll我们没有源码,如果要修改某些东西,可以用ilasm.exe反编译为il代码,修改后再编译回dll ilasm通常放在以下路径 C:\Windows\Microsoft.NET\Fr ...

  7. SpringMVC知识点总结一(非注解方式的处理器与映射器配置方法)

    一.SpringMVC处理请求原理图(参见以前博客) 1.  用户发送请求至前端控制器DispatcherServlet 2.  DispatcherServlet收到请求调用HandlerMappi ...

  8. 如何让 HTML 识别 string 里的 '\n' 并成功换行

    只要在结果所在的 div 的 css 设置: white-space: pre-line; 然后页面就能成功识别 '\n' 并整齐的显示结果了.

  9. Centos7下mysql的主从配置

    最近,有朋友业务并发量比较大,让我帮他配置个主从,来缓解数据库的压力.下面就是我配置的,有需要的朋友可以借鉴下. 首先,我得到2台服务器: 172.18.2.142(主) 172.18.2.141(从 ...

  10. ModelBinder 请求容错性

    代码 //using System.Web.Mvc; public class TrimToDBCModelBinder : DefaultModelBinder { public override ...