SORT AGAIN

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7707 Accepted Submission(s): 2406

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

Source
HDU 2008-10 Programming Contest

问题链接:HDU2523 SORT AGAIN
问题简述:(略)
问题分析
    由于ai的差值比较小,对其差值做计数统计一下(这个有点像计数排序),然后从小到大数一下就可以了。
    需要注意,组合ai算差值时要避免重复计算。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C语言程序如下:

/* HDU2523 SORT AGAIN */#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define N 1000
#define MAXV 2000
int a[N], cnt[MAXV + 1];int main(void)
{int c, n, k, i, j;scanf("%d", &c);while(c--) {scanf("%d%d", &n, &k);for(i = 0; i < n; i++)scanf("%d", &a[i]);memset(cnt, 0, sizeof(cnt));for(i = 0; i < n; i++)for(j = i + 1; j < n; j++)cnt[abs(a[i] - a[j])]++;for(i = 0; i <= MAXV; i++)if(cnt[i]) {if(--k == 0) {printf("%d\n", i);break;}}}return 0;
}

AC的C++语言程序如下:

/* HDU2523 SORT AGAIN */#include <iostream>
#include <cstring>
#include <cstdio>using namespace std;const int N = 1000;
const int MAXV = 2000;
int a[N], cnt[MAXV + 1];int main()
{int c, n, k;scanf("%d", &c);while(c--) {scanf("%d%d", &n, &k);for(int i = 0; i < n; i++)scanf("%d", &a[i]);memset(cnt, 0, sizeof(cnt));for(int i = 0; i < n; i++)for(int j = i + 1; j < n; j++)cnt[abs(a[i] - a[j])]++;for(int i = 0; i <= MAXV; i++)if(cnt[i]) {if(--k == 0) {printf("%d\n", i);break;}}}return 0;
}

HDU2523 SORT AGAIN【计数排序】相关推荐

  1. C语言计数排序Counting sort 算法(附完整源码)

    计数排序Counting sort 算法 计数排序Counting sort 算法的完整源码(定义,实现,main函数测试) 计数排序Counting sort 算法的完整源码(定义,实现,main函 ...

  2. java sorted排序_【算法】排序算法之计数排序

    前几回,我们已经对冒泡排序.直接插入排序.希尔排序.选择排序.快速排序.归并排序.堆排序做了说明分析.本回,将对计数排序进行相关说明分析. 一.排序算法系列目录说明 冒泡排序(Bubble Sort) ...

  3. java最全基础知识_Java编程入门,计数排序(Counting Sort)怎么做?

    计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数. 计数排序(Counting sort)是一种稳定的排 ...

  4. 倒序排序_排序算法(六):Counting Sort 计数排序

    之前文章介绍的一些排序算法都是基于比较来进行排序的,故它们在平均情况下的时间复杂度最好也不过是线性对数级别.这里我们来介绍一种简单的基于非比较的排序算法--Counting Sort 计数排序,其时间 ...

  5. C++counting sort计数排序(针对string)的实现算法(附完整源码)

    C++counting sort计数排序的实现算法 C++counting sort计数排序的实现算法完整源码(定义,实现,main函数测试) C++counting sort计数排序的实现算法完整源 ...

  6. C++counting sort计数排序的实现算法(附完整源码)

    C++counting sort计数排序的实现算法 C++counting sort计数排序的实现算法完整源码(定义,实现,main函数测试) C++counting sort计数排序的实现算法完整源 ...

  7. counting sort (计数排序) algorithm

    为什么80%的码农都做不了架构师?>>>    假设n个输入元素中每一个均介于0~k之间,k为最大值,这里k为整数.如果k=O(n), 则计数排序的运行时间为θ(n). 计数排序的核 ...

  8. 排序——计数排序(Count sort)

    概述 计数排序是一个非基于比较的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的.该算法于1954年由 Harold H. Seward 提出.它的优势在于在对一 ...

  9. 计数排序/Counting Sort

    计数排序的算法思想: 对于每一个元素x,只要确定了元素x有多少个比它小的元素,那么就可以知道其最终的位置. 记输入数组为A[n],存放最后排序输出的数组为B[n],提供临时存储空间的中间数组记为C[k ...

最新文章

  1. express项目创建步骤
  2. jQuery的$.fn使用
  3. python测试嵌入式_用Python测试嵌入式系统的测试框架
  4. java中的线程方面的面试题_Java线程类相关面试题与答案总结
  5. 云服务器发送开锁信息给单车,云服务器发送开锁信息给单车
  6. 使用Python GDAL库对高分三号全极化SAR影像进行RPC几何校正(PolSARpro格式)
  7. linux zip加压到文件夹,Linux下zip压缩和unzip解压缩命令全解
  8. 深度剖析Java集合之BitSet
  9. python-字符串的操作方法_format_列表的操作
  10. 我的世界电脑版 v1.14.0.68012
  11. 华为服务器2288h v3修复RAID,华为RH2288H V3服务器配置RAID(阵列卡LSI SAS3108)
  12. aps是什么意思_aps是什么意思
  13. python绘制光滑曲线
  14. 数据分析师的个人修养
  15. 《卓有成效的管理者》——学习心得(四)
  16. 商业保理与 P2P 是如何结合运作的
  17. Error: Can't find Python executable python, you can set the PYTHON env variable.解决办法
  18. html动态生成可输入的表格,动态生成表格.html
  19. 确定性网络:从“尽力而为”到“确定承诺”
  20. 阿里巴巴中国站按关键字搜索商品 API 返回值说明

热门文章

  1. yuml 保存为图片_SLAM建图
  2. ArcGIS中文注记图层发布服务后变乱码(方框乱码)/如何有效修改注记要素类文字样式
  3. PPT 如何做好关卡设计
  4. Android之Adapter总结
  5. PhoneGap跨平台移动应用开发框架体验
  6. IDEA使用和实用小技巧
  7. C语言pop_back用法,【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)...
  8. Android集成百度地图
  9. 2020-08-27
  10. 2020.3二级中选择题文件类型题目全套