HDU2523:SORT AGAIN
来源:互联网 发布:遗传算法应用领域 编辑:程序博客网 时间:2024/04/26 21:18
Problem Description
给你N个整数,x1,x2...xn,任取两个整数组合得到|xi-xj|,(0<i,j<=N,i!=j)。
现在请你计算第K大的组合数是哪个(一个组合数为第K大是指有K-1个不同的组合数小于它)。
现在请你计算第K大的组合数是哪个(一个组合数为第K大是指有K-1个不同的组合数小于它)。
Input
输入数据首先包含一个正整数C,表示包含C组测试用例.
每组测试数据的第一行包含两个整数N,K。(1<N<=1000,0<K<=2000)
接下去一行包含N个整数,代表x1,x2..xn。(0<=xi<=2000)
每组测试数据的第一行包含两个整数N,K。(1<N<=1000,0<K<=2000)
接下去一行包含N个整数,代表x1,x2..xn。(0<=xi<=2000)
Output
对于每组测试数据,请输出第K大的组合数,每个输出实例占一行。
Sample Input
33 24 0 74 21 2 3 42 12 9
Sample Output
427
我一开始的思路是直接将所有想减的绝对值丢进一个数组,再快排,果然是超时了
再看了下人家的程序,真心的,只能说思维比我灵活多了,菜鸟真心伤不起啊!
#include <iostream>#include <cstdio>#include <stdlib.h>#include <cstring>using namespace std;int cmp(const void *x,const void *y){ return (*(int *)x - *(int *)y);}int main(){ int t,a[1005],hash[2005]; cin >> t; while(t--) { memset(a,0,sizeof(a)); memset(hash,0,sizeof(hash)); int n,k,i,j,m = 0; cin >> n >> k; for(i = 1;i<=n;i++) cin >> a[i]; int num = 0,flag = 1; qsort(a+1,n,sizeof(int),cmp); for(i = 1;i<n;i++) { for(j = 1;i+j<=n;j++) { hash[a[i+j]-a[j]]++;//a[i+j]-a[j]就是题目中的|xi-xj| } } int z = 0; for(int x = 0;x<=2000;x++) { if(hash[x]) { z++;//统计位置 if(z == k) { cout << x << endl; break; } } } } return 0;}
- HDU2523:SORT AGAIN
- Hdu2523 - SORT AGAIN - 哈希
- HDU2523 SORT AGAIN【水题】
- hdu2523
- HDU 2523 SORT AGAIN
- SORT AGAIN 2523
- hdu SORT AGAIN *
- hdu 2523 SORT AGAIN
- hdu 2523SORT AGAIN
- hdu 2523 sort again
- hdoj-2523-SORT AGAIN
- HDOJ 2523 SORT AGAIN
- hdu2523哈希水题
- 数学题hdu2523
- HDU 2523--SORT AGAIN【水题】
- 杭电2523(SORT AGAIN)
- HDOJ(HDU) 2523 SORT AGAIN(推导排序、、)
- HDU1789Doing Homework again(贪心+sort)
- Android MediaPlayer与Http Proxy结合之提高篇
- Java I/O总结
- 应用libsvm对训练集进行训练并测试得出正确率和召回率
- 数学学习之阶乘
- 设置无边框全屏窗口
- HDU2523:SORT AGAIN
- paper
- archlinux 中文本地化配置
- Android 屏幕截图
- Remove '@override' annotation解决办法
- 我是一名辅导员
- 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
- 黑马程序员——JAVA中的面向对象
- ITRF2000框架坐标IGS站370个,历元1997.0