HDOJ(HDU) 2523 SORT AGAIN(推导排序、、)

Problem Description
给你N个整数,x1,x2…xn,任取两个整数组合得到|xi-xj|,(0 < i,j<=N,i!=j)。
现在请你计算第K大的组合数是哪个(一个组合数为第K大是指有K-1个不同的组合数小于它)。

Input
输入数据首先包含一个正整数C,表示包含C组测试用例.
每组测试数据的第一行包含两个整数N,K。(1< N<=1000,0< K<=2000)
接下去一行包含N个整数,代表x1,x2..xn。(0<=xi<=2000)

Output
对于每组测试数据,请输出第K大的组合数,每个输出实例占一行。

Sample Input
3
3 2
4 0 7
4 2
1 2 3 4
2 1
2 9

Sample Output
4
2
7

题意很简单~
就是求第k个组合数(组合数从小到打排序,重复的数只算一次)

容易知道,n个数的组合数最多有n*(n-1)/2个,可能有重复的,把这个n*(n-1)/2个组合数用数组存储起来,按从小到大排序,再从小到大找出第k个不重复的数!!!


import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t =sc.nextInt();

        while(t-->0){
            int n =sc.nextInt();
            int k=sc.nextInt();
            int a[] = new int[n];
            for(int i=0;i<n;i++){
                a[i]=sc.nextInt();
            }
            Arrays.sort(a);
            int b[] = new int[n*(n-1)/2];
            int h=0;
            for(int i=0;i<n-1;i++){
                for(int j=i+1;j<n;j++){
                    b[h]=Math.abs((a[i]-a[j]));
                    h++;
                }
            }

            Arrays.sort(b);
            h=0;
            for(int i=0;i<b.length-1;i++){
                if(b[i]!=b[i+1]){
                    h++;
                    if(h==k){
                        h=i;
                        break;
                    }
                }
            }
            System.out.println(b[h]);
        }
    }
}
时间: 2024-10-22 04:55:25

HDOJ(HDU) 2523 SORT AGAIN(推导排序、、)的相关文章

HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)

Problem Description 在上一回,我们让你猜测海东集团用地的形状,你猜对了吗?不管结果如何,都没关系,下面我继续向大家讲解海东集团的发展情况: 在最初的两年里,HDU发展非常迅速,综合各种ACM算法生成的老鼠药效果奇好,据说该药专对老鼠有效,如果被人误食了,没有任何副作用,甚至有传闻说还有健胃的效果,不过这倒没有得到临床验证.所以,公司的销量逐年递增,利润也是节节攀升,作为股东之一的公主负责财务,最近半年,她实在辛苦,多次因为点钞票造成双手抽筋而住院,现在在她面前你根本不要提到"

C++ 关于STL中sort()对struct排序的方法_C 语言

前言 一直没有系统去看过c++,因为懂得一些c的基本语法,在实际编程中用到c++,只能用到哪些看哪些,发现这样虽然能够完成大部分工作,但是有时候效率实在太低,比如说这节要讲的Std::sort()函数的使用,调了半天才调通.开通c/c++序列博客是记录在使用c++中一些难题,避免以后重犯错,当然以后会尽量挤出时间来较系统学习下c++. 开发环境:QtCreator2.5.1+OpenCV2.4.3 实验基础 首先来看看std中的快速排序算法sort的使用方法: template <class R

在Python中使用sort()方法进行排序的简单教程

  这篇文章主要介绍了在Python中使用sort()方法进行排序的简单教程,是Python学习中的基础知识,需要的朋友可以参考下 sort()方法排序列表中的对象,比较使用func(如果给定). 语法 以下是sort()方法的语法: ? 1 list.sort([func]) 参数 func -- 这是一个可选参数,如果有将使用该函数,对列表中的对象进行排序 返回值 此方法不返回任何值,但是从列表中给定的对象进行排序 例子 下面的例子显示了sort()方法的使用 ? 1 2 3 4 5 6 #

golang使用sort接口实现排序示例_Golang

本文实例讲述了golang使用sort接口实现排序的方法.分享给大家供大家参考,具体如下: 今天看见群里再讨论排序的sort.Interface的实现,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,代码放在这里. 其实很简单sort.Interface借口有三个方法,给自己的struct实现这三个方法,然后用将自己的结构体传给sort.Sort方法就排序完成. 当然sort包也有几个常用的方法sort.Float64Slice sort.IntSlise sort.StringSlise,呵呵

HDOJ(HDU) 2093 考试排名(Arrays.sort排序、类的应用)

Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么"AC",要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题"AC"后,就要与你算一算帐了,总共该题错误提交了几回.虽然你在题数上,大步地跃上了一个台阶,但是在耗时上要摊上你共花去的时间.特别是,曾经有过的错误提交,每次都要摊上一定的单位时间分.这样一来,你在做出的

HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)

Problem Description 杭州师范大学第29届田径运动会圆满的闭幕了,本届运动会是我校规模最大,参赛人数最多的一次运动会.在两天半时间里,由学生.教工组成的61支代表队共2664名运动员参加了比赛.比赛期间,运动健儿赛出了风格.赛出了水平,共有9人次打破6项校纪录. 我们寝室的4名同学是我班最卖力的啦啦队员,每天都在看台上为班级里的运动员们加油助威,为我班获得精神文明奖立下了汗马功劳.可是遗憾的是,与我校的其他近2万名同学一样,我们自己不能上场表演 :( 于是,我们4名同学为下一届

HDOJ/HDU 1029 Ignatius and the Princess IV(简单DP,排序)

此题无法用JavaAC,不相信的可以去HD1029题试下! Problem Description "OK, you are not too bad, em- But you can never pass the next test." feng5166 says. "I will tell you an odd number N, and then N integers. There will be a special integer among them, you hav

HDOJ/HDU 2550 百步穿杨(注意排序)

Problem Description 时维九月,序属三秋,辽军大举进攻MCA山,战场上两军正交锋.辽军统帅是名噪一时的耶律-James,而MCA方则是派出了传统武将中草药123.双方经过协商,约定在十一月八日正午十分进行射箭对攻战.中草药123早早就开始准备,但是他是武将而不是铁匠,造弓箭的活就交给聪明能干的你了,现在告诉你每种弓箭规格,即箭身的长度,以及每种规格弓箭所需要的数目,要求你把需要的弓箭都输出. 弓箭的基本样子为 ">+-+>",其中"+-+&quo

HDOJ(HDU) 2115 I Love This Game(排序排序、、、)

Problem Description Do you like playing basketball ? If you are , you may know the NBA Skills Challenge . It is the content of the basketball skills . It include several parts , such as passing , shooting , and so on. After completion of the content