随笔分类 - 算法进阶
摘要:前缀和之树状数组 树状数组(Fenwick Tree)是一种用于高效处理区间查询与修改的重要工具。它可以在 (O(log n)) 的时间复杂度内完成单点更新和前缀区间求和的操作。 一、树状数组的基本思想 树状数组通过一个辅助数组 (c[i]) 实现,将原数组的信息以一种特殊的方式存储,使得查询和更新
阅读全文
摘要:直接上代码吧,可以递归解决也可以非递归解决。 import java.util.LinkedList; public class Main{ /* 由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j] 由dp[i - 1][j -
阅读全文
摘要:(文章目录) 前言 本文介绍单调栈和单调队列的使用,并且提供模板。 一、单调栈? 栈地到栈顶是单调增加或者单调减少的。 1.代码模板: //常见模型:找出每个数左边离它最近的比它大/小的数 //stk[0]是不存放元素的,stk[tt]存放栈顶元素 int tt = 0; for (int i =
阅读全文
摘要:AcWing 785 快速排序https://www.acwing.com//activity/content/code/content/39784/AcWing 786 第k个数https://www.acwing.com//activity/content/code/content/39785/
阅读全文
摘要:参考链接:https://www.acwing.com/solution/acwing/content/2286/ 主串是”ababaeaba”,模式串是”ababacd”,在暴力算法中,遇到不匹配的情况是这样处理的: main: "ababaeaba" // 例如这两个串,当sub为"ababae
阅读全文
摘要:https://www.acwing.com/problem/content/description/150/ 哈夫曼树可以通过小根堆实现。小根堆每次弹出两个值,然后将二者的和再插入小根堆中。 比如求
阅读全文
摘要:工程师常使用服务器集群来设计和实现数据缓存,以下是常见的策略: 1.无论是添加、查询还是删除数据,都先将数据的id通过哈希函数转换成一个哈希值,记为key。 2.如果目前机器有N 台,则计算key%N的值,这个值就是该数据所属的机器编号,无论是添加、删除还是查询操作,都只在这台机器上进行。 请分析这
阅读全文
摘要:【题目】 有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。 【要求】 内存限制为2GB。 【解答】 想要在很多整数中找到出现次数最多的数,通常的做法是使用哈希表对出现的每一个数做词频统计,哈希表的key是某一个整数,value是这个数出现的次数。就本题来说,一共有20亿个数,哪
阅读全文
摘要:一、背包问题 题目 https://leetcode-cn.com/problems/coin-change/ 题目 https://leetcode-cn.com/problems/coin-change-2/submissions/ 题解 https://leetcode-cn.com/prob
阅读全文
摘要:参考链接:https://blog.csdn.net/lxt_Lucia/article/details/81206439 我们之前探讨过的很多算法都是利用问题的可划分性以及子问题之间的相似性来进行归纳,降低求解的复杂度,动态规划也不例外。每个子问题的求解过程都构成一个“阶段”。在完成前个阶段的计算
阅读全文
摘要:就是为了干倒二分题目。 题目 475. Heaters Winter is coming! Your first job during the contest is to design a standard heater with fixed warm radius to warm all the
阅读全文
摘要:参考链接:https://www.cnblogs.com/Kohinur/p/8947142.html 链式前向星 vector存储
阅读全文
摘要:二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。 版本1 在单调递增序列a中查找>=x的数中最小的一个(即x或x的后继)low_bound 当我们将区间[l, r]划分成[l, mid]和[mid +
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/147/ 容易想到一个贪心策略:在最优解中,对于每个时间(天数) t,应该在保证不卖出过期商品的前提下,尽量卖出利润前t大的商品。因此,我们可以依次考虑每个商品,动态维护一个满足上述性质的方案。详细地说,我们把商
阅读全文
摘要:我们考虑所有的二元组(i,j)且i<j,那么本题的目标就是在其中找到Ai xorAj的最大值。也就是说,对于每个i(1≤i≤N),我们希望找到一个j(1<j<i),使AixorAj最大,并求出这个最大值。 我们可以把每个整数看作长度为32的二进制01串(数值较小时在前边补0),并且把A1~Ai-1对
阅读全文
摘要:参考链接:https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 题目链接:https://www.acwing.com/problem/content/description/144/ 一、引入 字典是干啥的?查找字的。 字典树自然也是起查找
阅读全文
摘要:参考链接:https://www.cnblogs.com/wyboooo/p/9813428.html 题目链接:https://www.acwing.com/problem/content/140/ 将哈希算法用于字符串匹配的原理非常简单。对于每个起始位置,我们不是O(m)地直接比较字符串是否匹配
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/138/ 参考链接:https://blog.csdn.net/sdz20172133/article/details/80101838 能进行算术运算的迭代器只有随即访问迭代器,要求容器元素存储在连续内存空间里
阅读全文
摘要:参考链接:https://blog.csdn.net/SSLGZ_yyc/article/details/81700623 对顶栈的思想: 建立两个栈,栈A存储从序列开头到当前光标的位置的一段序列,栈B存储从光标到结尾的序列。这两个栈一共存储了整个序列。 java版本代码 c++版本代码:
阅读全文
摘要:参考《算法竞赛进阶指南》p.49 题目链接:https://www.acwing.com/problem/content/description/131/ 递推与递归的宏观描述 对于一个待求解的问题”,当它局限在某处边界、某个小范围或者某种特殊情形时,其答案往往是已知的。如果能够将该解答的应用场景扩
阅读全文