【无答案】阿里巴巴2020春招笔试题(第二题)

题目描述:

有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。

后边怎么解我是真的不会了。。。。。

希望有人会的话可以指点我一下。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值