topK 问题之为啥 TopK 用的是小根堆?
topK 问题最容易想到的两种解法,无非就是快排和堆。 快排用了分治是思想,根据一趟排序的下标来判断继续在哪边的区间里寻找 topK 则是利用堆的性质,堆顶的元素一定是最大(大根堆)或最小(小根) 今天这篇文章主要是说明一下在堆的解法中: 为啥求...
topK 问题最容易想到的两种解法,无非就是快排和堆。 快排用了分治是思想,根据一趟排序的下标来判断继续在哪边的区间里寻找 topK 则是利用堆的性质,堆顶的元素一定是最大(大根堆)或最小(小根) 今天这篇文章主要是说明一下在堆的解法中: 为啥求...
Union-Find 算法详解并查集算法,主要是解决图论中「动态连通性」问题的。名词很高端,其实特别好理解,等会解释,另外这个算法的应用都非常有趣。 先解释一下什么叫动态连通性吧。 一、问题介绍简单说,动态连通性其实可以抽象成给一幅图连线。比如下面这...
3 无重复字符的最长子串垃圾的滑动窗口:外层 i, 内层 j 从 i 开始一点点加。结束内层后清理掉整个map 记忆的数据。 实际上不需要完全清理,只需要 i++ 后清理掉 i, j 可以继续++ 41234567891011121314151617...
再刷洛谷试炼场,发现试炼场已经无了。开始以为找不到了,知乎上看到站长的回复才知道真的无了。我是从这个人整理的版本里刷的:https://www.luogu.com.cn/paste/66uuuvdr 用 Go 大概刷了 10 道题之后,放弃洛谷...
知识点:快速幂 高精 负进制 分治P1226 【模板】快速幂||取余运算https://www.luogu.org/blog/costudy/base-2 就看这一篇题解!!! 然后下面备份一下代码: 12345678910int quickPo...
Note 用int数组时,我习惯于先把数字相乘存起来,再统一计算进位。 但是用char数组存数时,问题来了,当遇到大数,99*99时,不进位则会在一位存入81+81=162。要知道char只能表示128的数啊。最终结果错误。 洛谷...
背包问题、线性动归、多维动归、技巧与记忆化《背包问题九讲》 背包九讲01\完全\多重\混合 01(每个物品仅1个 总容量V不用装满) 123for i=1..n for j=V..v[i] ans[j]=max(ans[j],ans[...
知识点:【P1182 数列分段Section II答案二分、前缀和】 递推与递归二分台阶问题和数的划分。其实就代表了排列和组合两种情况。排列,和顺序有关。组合,不管顺序只看元素。所以要彻底搞清下面的两个问题! P1192 台阶问题k=2...
“逆序对”归并和线段树两种解法。这道经典题存在于任何一个算法题库中,故单独拿出分析讨论。 暴力如果仅仅是用暴力、普通的分治方法。遇到数据量较大时内存不够。 归并归并排序的时间复杂度用归并法解此题之前先考虑一下,为何归并排序的时间复杂度是$O(nl...
普及练习场 知识点汇总:DFS、BFS、☆杨辉三角P1118 USACO06FEB 数字三角形☆ 求解的个数用深搜,求最优解用广搜。 DFSP1219 八皇后弱智一样的我,还建立NxN的矩阵来模拟。 结果呢,检查(check)时要遍历整个棋盘...