发现提交记录全用的是nth_element...(真就STL依赖症?) 提供一种 \(\mathcal O(n)\) 的分治算法。 Solution 我们可以用类似快排的方式。在快排的分治中,若双指针(\(i,j\))已经扫描完这段区间 \([l,r]\),即 \(i\) 已经大于 \(j\),就会 ...
分类:
其他好文 时间:
2020-12-08 12:34:42
阅读次数:
6
用下`nth_element`逃课,不熟的话在快排的基础上改下随机选择算法也是一样的 ...
分类:
其他好文 时间:
2020-07-03 17:15:27
阅读次数:
58
找1 n数组的第k小(k从1开始编号) 注意即使是1 n的数组,找第k小也是 而非 如果是0 n 1的数组,找第k小为(k从0开始编号) 复杂度O(n),执行完毕后a[k]就是第k小的元素 ...
分类:
其他好文 时间:
2020-03-31 10:52:55
阅读次数:
115
题目都太难了 我心态有点爆炸 来点简单的东西愉悦一下身心。 打代码真的是一件令人欢快的事情。 KD tree这个数据结构以前学过好多遍了 以前我还学会过 但是好像一直没写过到现在也就忘了。。 趁这个晚上赶紧补一发。 首先是 nth_element函数 所需头文件 algorithm 使用格式nth_ ...
分类:
其他好文 时间:
2020-03-05 15:04:32
阅读次数:
72
csp-s模拟测试 56 A. Merchant 对于一个确定的集合,只可能是先减后增、单调增、>0部分的单调减 减的最优出现在0,check下 没有就直接二分值域,对于x,选出最大的m个函数值验证。 nth_element可以做到O(n) B. Equation 式子可以化成与自身和x1有关 边的 ...
分类:
其他好文 时间:
2019-10-06 13:12:45
阅读次数:
59
T1 一般都能想到二分+取前m大正值,但是复杂度无法承受,我们发现要的是sum值,并不需要每个位置的准确值, 所以用可以nth_element把大于第m大的放右边即可。(原来nth还可以这么用)。 nth_element实现: 每次找一个base,小于base的放右边,大于的放右边 1 #inclu ...
分类:
其他好文 时间:
2019-10-03 14:48:17
阅读次数:
78
T1: 对于同一种选取方案,在时间上是单调的。 如果单调下降,那么该方案的最优点在0,反之可以二分位置。 现在我们需要求得在某个时间上的前m小值,用nth_element即可。 时间复杂度$O(nlog\max(ans))$。 T2: 每条路径的意义就是两端的点权之和。 我们可以折叠所有点到根节点的 ...
分类:
其他好文 时间:
2019-10-03 14:22:07
阅读次数:
99
题面:https://www.cnblogs.com/Juve/articles/11619002.html merchant: 二分答案,贪心选前m大的 但是用sort复杂度不优,会T掉 我们只是找前m大的,至于前m大的如何排序我们并不关心 所以用nth_element()函数找出前m大的,然后贪 ...
分类:
其他好文 时间:
2019-10-03 10:44:02
阅读次数:
89
#include<ctime> #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; #define ll long long const int maxn=1e6 ...
分类:
其他好文 时间:
2019-10-02 17:07:24
阅读次数:
92
使用方法:nth_element(start, start+n, end) 使第n大元素处于第n位置(从0开始,其位置是下标为n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的。 #include <algorithm> #includ ...
分类:
其他好文 时间:
2019-01-24 22:59:13
阅读次数:
239