题目描述:
有n个员工,每个员工有自己的两个特征值:a和b。
若员工i和员工j进行合作,则其合作产生的效果:A=(ai+aj)/2,B=(bi+bj)/2。
现从n个员工中任选两个合作,使得min(A,B)最大。
n<=2*10^5
ai,bi<=10^8
输入:n及每个员工的a,b。
输出:min(A,B)的最大值,结果保留一位小数。
样例:
3
1 3
2 2
3 1
输出:2.0
选择第一个人和第二个人合作,A=1.5 B=2.5 min(A,B)=1.5
选择第一个人和第三个人合作,A=2.0 B=2.0 min(A,B)=2.0
选择第二个人和第三个人合作,A=2.5 B=1.5 min(A,B)=1.5
分析:
最开始没啥思路,尝试用贪心,但是没有一个合适的策略。
最小值最大让我想到能不能用二分,二分答案以后的判断,又是n^2的,好像也不行。
问了大佬,说根据式子:A=(ai+aj)/2,B=(bi+bj)/2 可以用几何的方法做,把n个人看做n个点,然后问题就变成了有n个点,求每个点两两之间的中点坐标的最小值最大。
这个问题怎么解决呢?
坐标的最小值最大也就是 点越接近直线y=x。
后边怎么解我是真的不会了。。。。。
希望有人会的话可以指点我一下。