首页 > 试题广场 >

孙悟空的徒弟

[编程题]孙悟空的徒弟
  • 热度指数:3795 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解

打败魔人布欧以后,孙悟空收了n个徒弟,每个徒弟战斗力各不相同。他教导所有的徒弟和体术,合体后战斗力为原战斗力相乘。任何两个徒弟都可以合体,所以一共有n*(n-1)/2种合体徒弟。有一天,他想考验一下孙悟天战斗力如何,希望在所有n*(n-1)/2种合体徒弟中选择战斗力第k高的,与孙悟天对战。可是孙悟空徒弟太多了,他已然懵逼,于是找到了你,请你帮他找到对的人。


输入描述:
第一行两个int。徒弟数量:n <= 1*10^6;战斗力排名:k <= n*(n-1)/2
第二行空格分隔n个int,表示每个徒弟的战斗力。


输出描述:
战斗力排名k的合体徒弟战斗力。
示例1

输入

5 2
1 3 4 5 9

输出

36
头像 bandiaoz
发表于 2024-12-26 14:44:52
解题思路 这是一道查找第 大合体战斗力的题目,主要思路如下: 问题分析: 个徒弟可以两两合体 合体后战斗力为原战斗力相乘 需要找到第 大的合体战斗力 解决方案: 先对原始战斗力排序 使用二分查找确定第 大的值 对每个二分的中值,使用双指针统计大于该值的合体数量 双指针技巧 展开全文
头像 laglangyue
发表于 2020-06-03 21:30:01
没人写题解嘛,暴力法,枚举全部情况,放入容器中 65%然后二分法(借鉴抄袭大佬的),不知道具体的值,也能用二分,具体的看代码吧。 import java.util.*; public class Main { public static void main(String[] args){ 展开全文

热门推荐

通过挑战的用户

查看代码
孙悟空的徒弟