帆软笔试第2道编程题怎么做

N比赛轮数,K阈值,R评分数组
2^N场比赛 根据评分  评分高的人必胜
要求:评分前两名 决赛对决
评分前四名  半决赛
评分前八名  1/4决赛
。。。
如果对决的差值大于阈值K,则称该场次为势均力敌的比赛
问最多能有多少场势均力敌的比赛?
好难啊🤯 #笔试#
全部评论
请问帆软笔试是链接失效前随便找个时间做都行吗?刚收到邮件
点赞 回复 分享
发布于 09-05 17:16 上海
刚做完,居然AK了,题目条件是尽量公平,也就是前两名一定进决赛,前四名一定进四强,以此类推。所以可以先排序,降序,每打一轮数组就减少后面一半的人(当然这里数组没有必要真的删掉后一半,遍历的时候每次缩小一半即可),遍历所有轮数(log2N),每一轮枚举前一半和后一半的比赛情况(前一半 * 后一半 O(n2)),看是否小于等于阈值K,这里的枚举可以用到大量的剪枝,因为已经排好序了,第一个剪枝,如果一旦前一半某个数和后一半某个数差值小于K,说明已经匹配好了,ans++,直接退出,枚举前一半下一个元素,第二个剪枝,如果前一半某个数和后一半某个数差值已经大于K了,也直接退出,因为是降序,后一半某个数后面的数只会更小,再和前面的比较更会大于K了,直接退出,我是两个剪枝后就AK了
点赞 回复 分享
发布于 09-04 21:21 吉林

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务