首页 > 第k小数
头像 一经多少年
发表于 2020-05-25 22:13:22
没啥描述,,,作用为求第n大的元素,并把它放在第n位置上,下标是从0開始计数的,也就是说求第0小的元素就是最小的数。如:a[start,end]元素区间。排序后a[n]就是数列中第n+1大的数(下标从0開始计数)。要注意的是a[start,n),a[n,end]内的大小顺序还不一定。 仅仅能确定a[ 展开全文
头像 铁厂打工人
发表于 2021-01-16 12:56:51
解题思路采用快排的思想,每次确定第k小数所在的区间,直到区间只剩下一个元素,或者k处在mid位置 AC代码 #include <iostream> using namespace std; const int N=5000010; int a[N]; int finding(int 展开全文
头像 那万一赢了呢
发表于 2020-08-13 18:57:40
题目:牛客幼儿园的小朋友课间操时间需要按照学号从小到大排队,但是他们太小了只能站成一列顺序却不对,现在幼儿园的阿姨需要帮忙交换小朋友的位置让他们最终有序,阿姨希望能尽快完成交换操作,问最少需要交换多少次,才能使得小朋友们从小到大排好。注意:每个小朋友的学号不同,但是未必连续,因为可能有小朋友请假了没 展开全文
头像 天才制杖
发表于 2023-07-22 18:54:53
这位大哥才是牛逼啊,更本不用排序,直接查。 代码简介不难,可以自己想想 #include <stdlib.h> int ge(){ int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){ 展开全文
头像 Nikola_Tesla
发表于 2021-01-16 11:42:08
他说了数字的范围是 int 以内, 所以直接桶排序会爆内存(也不知道为什么能过, 出题人数据太水) 正确同排序方法 应该是先缩小范围, 然后在桶 先采用分块的方式 开个vector <int> [maxn] 来放 然后 On 的时间就可以把范围缩小其中的某个 块内 展开全文
头像 per_learning
发表于 2020-05-27 15:23:07
#include<bits/stdc++.h> using namespace std; const int N=100003; int n,k=1,f; double x[N],y[N],z[N]; int main() { cin>>n; for(i 展开全文
头像 威风镰鼬
发表于 2021-06-17 09:33:15
思路 把数输入、排序、输出一气呵成。 代码 #include<bits/stdc++.h> using namespace std; inline void read(int &data){ int x=0,f=1;char ch=getchar(); whil 展开全文
头像 三大爷的剑
发表于 2021-09-29 17:12:51
技巧:     快速排序 思路:     题目其实很简单。由于用go实现。硬是卡了半天     坑点1: 开始用scan.Text() 由于最大程度限制一直越界     坑点2 展开全文
头像 CalvinLin011010
发表于 2022-07-26 11:45:56
题目链接: https://ac.nowcoder.com/acm/problem/207028 题面: 给你一个长度为n的序列,求序列中第k小数的多少。 输入描述: 多组输入,第一行读入一个整数T表示有T组数据。 每组数据占两行,第一行为两个整数n,k,表示数列长度和k。 第二行为n个用空格隔开 展开全文
头像 一只羊蝎子
发表于 2021-02-01 20:08:12
思路 求第k小的数,第一时间就能想到和排序有关,但这个数据量用冒泡排序什么的肯定会很糟糕,所以用到了快速排序 在快速排序时,我们先选取一个基准值,然后把数组中所有比基准值小的数放到基准值左边,比基准值大的数放到基准值右边,等于基准值的数任意放在哪一边。每一次完成这样的操作以后,我们根据k和基准值的大 展开全文