随笔分类 - 算法与数据结构知识及例题
摘要:#### 1. 操作 | 符号 | 含义 | | | | | $nums$ | 原数组 | | $d$ | 线段树节点维护值 | | $lazytag$ | 线段树节点懒标记值 | | $p$ | 当前节点 | | $s$ | 查询区间的开始 | | $e$ | 查询区间的结尾 | | $l$ |
阅读全文
摘要:一、线段树 二、树状数组 原理 我们通过观察这张图可以发现如下性质: 后缀和的长度是 $2$ 的幂。 上一层后缀和的长度是下一层的 $2$ 倍。 下面一层只要补上自己的后缀和长度就可以得到上面层的后缀和的长度(即虚线框)。 1. 单点修改 从树状数组的原理我们可以看出,假如我们修改一个点的值,则会影
阅读全文
摘要:2022.6.27 构造mex序列 $ans=\min(mex(nums[l_{i}]\dots nums[r_{i}]))\=\min(r_{i}-l_{i}+1)$ 我们可以知道对于每个区间$[l_{i},r_{i}]$,该区间的$mex$值最大为$r_{i}-l_{i}+1$ 所以我们只需要遍
阅读全文
摘要:迷宫(P1605) 题目描述: 给定一个$N*M$方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。 int dir[4][2]={ {1
阅读全文
摘要:二分查找看起来确实是一个方便又快捷的方法,但是真正在使用的过程中我们会发现许多令人头疼的事——二分边界。 首先总结一下关于中间值取整问题: 首先,如果题目属于二分值越大越符合条件,即要求符合条件的最小值,那就是: while(l<r){ mid=(l+r)/2; //或者mid=l+(r-l)/2;
阅读全文
摘要:一、无向图遍历 e.g. 有向无环图中一个节点的所有祖先 bitset+adjacent matrix巧解 遍历每个节点的所有父节点,找到后让父节点继承该节点的所有子节点 class Solution { public: vector<vector<int>> getAncestors(int n,
阅读全文
摘要:定义 记忆化搜索其实很好理解。当我们用DFS,BFS暴力搜索的时候,有很多状态其实是重复计算了很多次的,这时候,我们就可以用空间换取时间,将这些状态全都装在数组里,当我们再次搜索到该状态的时候,便可以直接返回记录的值。 例题 e.g.1 检查是否有合法括号字符串路径 这道题就是万恶之源,本来我也不怎
阅读全文
摘要:一、格雷码 手动构造方法 $k$位格雷码可以由以下方法构造: 1.翻转最低位得到下一个格雷码(e.g. 000->001) 2.将最右位的1的左边的位翻转得到下一个格雷码(e.g. 001->011) 交替上述策略$2^k-1$次。 计算方法 观察$G(n)$与n的二进制,可以发现如果$G(n)$的
阅读全文

浙公网安备 33010602011771号