瑶瑶的第K大 (快排+选择一半快排)
来源:互联网 发布:vba range.offset 数组 编辑:程序博客网 时间:2024/04/29 20:35
瑶瑶的第K大Time Limit: 4000/2000MS (Java/Others)Memory Limit: 256000/128000KB (Java/Others)SubmitStatisticNext ProblemProblem Description一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。尴尬了一阵子,机智的瑶瑶就提议:“这样吧,你说N个整数xi,然后在随意说一个数字k,我能够快速地说出这些数字里面第 k 大的数字。”Input第1行 两个整数N, K以空格隔开;第2行 有N个整数(可出现相同数字,均为随机生成),同样以空格隔开。0 < n ≤ 5*10^6 , 0 < k ≤ n1 ≤ xi ≤ 10^8Output输出第 k 大的数字。Sample Input5 25 4 1 3 1Sample Output4Hint如2,2,1中三个数字中第一大数字为2,第二大数字也为2,第三大数字为1 。SourcetsyaoManagertsyao#include <iostream>#include <algorithm>#include <string>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include<map>#include<queue>using namespace std;const int maxn=100001;const int base=31700;const int INF=9999999;const int MIN=-INF;int a[5000005];int n, k, ans;int read (){ int x = 0; char ch = ' '; while (ch < '0' || ch > '9') ch = getchar (); while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar (); return x;}void sort (int l, int r){ int last = l; swap (a[l], a[(l + r) >> 1]); for (int i = l + 1; i <= r; ++ i) if (a[l] < a[i]) swap (a[++ last], a[i]); swap (a[l], a[last]); if (last == k) ans = a[k]; else if (k < last) sort (l, last - 1); else sort (last + 1, r);}int main(){ int m,i,j,t; while (~scanf ("%d%d", &n, &k)) { for (int i = 1; i <= n; ++ i) a[i] = read (); sort (1, n); printf ("%d\n", ans); } return 0;}
0 0
- 瑶瑶的第K大 (快排+选择一半快排)
- 快排算法及利用快排思想寻找第k大(小)的数
- 寻找第K大的数(快排思想)
- 快排应用-第k大元素
- 找最轻最重 快排思想 第K大
- //快排思想第k大
- 【ACdream OJ 1099 - 瑶瑶的第K大 (输入优化+手写O(n)快排)】
- 分治法 快排 输出第k大的数
- 第k小数(快排)
- 基于快排的选择算法:返回数组中第k小的数
- 快排以及查找第K元素
- 寻找第k大数(快排思想)
- 【滴滴笔试】利用快排找到一个无序的数组中的第K大的数
- 快排的思想求第K小的数
- 快排函数Patiton来求解第K大的数
- 利用快排思想找出数组中第k大的元素
- 20170927_快排应用_数组中寻找第K大的数字
- 寻找无序数组中第k大的数——快排思想
- Android Application对象必须掌握的七点
- 排序算法——选择排序
- 用eclipse创建maven项目pom.xml报错的解决办法
- 蓝桥杯 ALGO-110 字符串的展开(字符串)
- oc经常提到的静态方法中返回的对象,是否需要进行reless操作。
- 瑶瑶的第K大 (快排+选择一半快排)
- HDU1715 大斐波数
- 学习Google例子 ApiDemo
- svn常见问题及原因
- 在cmd下用mysql客户机连接mysql服务器
- 利用backtrace诊断 Segment Fault 崩溃原因
- http协议深度剖析
- C++string类常用函数
- 守护进程的学习