首页 > 第k小数
头像 铁厂打工人
发表于 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 展开全文
头像 hahaxixiwx
发表于 2022-01-27 23:31:30
第k小数 解题思路: 快排:随机选一个数为基准(一般选中间的数)将大于它的放右边,小的放左边。(要把中间数的值存下来,因为仅靠mid来锁定这个基准数,是不够的,他的位置会变。) 用快排来解决问题,不同的是对于没用到的一边不用排序。 解题代码: #include<bits/stdc++ 展开全文
头像 天才制杖
发表于 2023-07-22 18:54:53
这位大哥才是牛逼啊,更本不用排序,直接查。 代码简介不难,可以自己想想 #include <stdlib.h> int ge(){ int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){ 展开全文
头像 那万一赢了呢
发表于 2020-08-13 18:57:40
题目:牛客幼儿园的小朋友课间操时间需要按照学号从小到大排队,但是他们太小了只能站成一列顺序却不对,现在幼儿园的阿姨需要帮忙交换小朋友的位置让他们最终有序,阿姨希望能尽快完成交换操作,问最少需要交换多少次,才能使得小朋友们从小到大排好。注意:每个小朋友的学号不同,但是未必连续,因为可能有小朋友请假了没 展开全文
头像 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和基准值的大 展开全文