随笔分类 - 算法学习笔记&个人exp
摘要:事先声明:本文并非线段树教学。只是一些理解Trick。若您需从0学起线段树建议您移步其他博文呢qwq 感谢 Idea 提供 [尺子姐姐的博客!](https://www.cnblogs.com/ruierqwq/),尺子好闪,拜谢尺子! 我们在学习线段树的时候,对于乘法“lazy tag 先乘再加”
阅读全文
摘要:> 当一个选手比你小还比你强,你就可以退役了。 单调队列 ### 简介 单调队列一般用于维护动态区间内的极值,它可以做到线性的复杂度下求出所有动态区间的极值。 它的原理在上文引用部分已经提到,每次队列中只维护**可能成为区间极值**的元素,具体地,例如求区间最小值,若队列中有的数比新增加的数大,则可
阅读全文
摘要:[Problem](https://www.luogu.com.cn/problem/P1880) ### Solution 本题还有一个弱化版,见[Luogu P1775](https://www.luogu.com.cn/problem/P1775) 我们发现本题和弱化版唯一区别就是本题有环。
阅读全文
摘要:### 前言 dp背包模型属dp的一种,可以帮助我们快速的转移状态,解题。dp背包模型题的关键是判断这是哪种背包,属于什么类型的dp,只有判断出这是什么类型的背包,才能进一步朝这个方向思考。 ### 01背包 01背包的常规形式是有$n$种物品,每间物品都有重量和价值两个参数。每件物品都可以选or不
阅读全文
摘要:### 多重背包 回顾一下多重背包是什么?有$n$种物品,每个物品都有有限个,每个物品都有重量和价值两个参数,你有一个限重为$W$的背包,求背包内价值最大。 我们朴素的做法是将多重背包拆分成01背包求解,因为每个物品都有有限个,假设第$i$个物品有$j$个,那么跑$j$次01背包即可。 但是这样复杂
阅读全文
摘要:UPD on 2024/07/29 更新了部分内容。 本文理论内容较多,可能有些无聊,建议读者配合画图理解。 有向图 DFS生成树 在介绍下面内容前,我们先来了解一下DFS生成树,这是学习 tarjan 全家桶的基础。 下面的 DFS 生成树基于有向图。后面再介绍无向图。 一棵DFS生成树分为树边,
阅读全文
摘要:### 前置知识 在学习dp前,你可能需要掌握: - dfs - 搜索及剪枝技巧 - 记忆化搜索 **Advice:打开目录食用效果更佳** ### 引子 我们从一个经典例题开始入门: > 一只青蛙跳楼梯,一次可以一级或两级,若青蛙想要跳 $n$ 级楼梯,有多少种跳法? 我们可以很容易想到暴力dfs
阅读全文
摘要:闲话:当时做ybt 1250的时候不会位运算被嘲讽了...特写篇文章纪念一下: #### 位运算 位运算就是在数据二进制形式下进行操作,众所周知电脑最终处理的是二进制,所以使用位运算来代替一些普通十进制下的运算可以大大提高效率。(可以理解为位运算是在数据底层操作) 这里将介绍几种实用的位运算,以及基
阅读全文
摘要:前缀和 & 差分 一般作为优化策略。 前缀和是解决一些区间多次修改但查询次数较少的题目,定义新数组 sum[N], 原数组a[N],则令 $$ sum[i] = sum[i-1] + a[i] $$ 显然时间复杂度为O(N),需要注意,下标至少从1开始,否则取 i-1 时会越界 例题 : 小 K 打
阅读全文