随笔分类 - 算法
算法学习记录
摘要:时空复杂度分析 一般笔试题的时间限制是1秒或2秒。而 C++ 一秒之内能够计算 次。 下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择: , 指数级别, dfs+剪枝,状态压缩dp => O,fl
阅读全文
摘要:绝对值不等式 题目链接:AcWing 104. 货仓选址 $$ \begin{align*} f(x) &= \lvert x_1 - x \rvert + \lvert x_2 - x \rvert + \cdots + \lvert x_n - x \rvert \ &= ( \lvert x_
阅读全文
摘要:推公式 题目链接:AcWing 125. 耍杂技的牛 先给出结论: 按照W[i]+S[i]从小到大的顺序排,最大的危险系数一定是最小的。 证明思路: 贪心得到的答案 最优解 贪心得到的答案 最优解 #include <iostream> #include <algorithm
阅读全文
摘要:排序不等式 题目链接:AcWing 913. 排队打水 让最磨叽的人最后打水。 如图所示,第一个同学被等了6次,第二个同学被等了5次,以此类推...
阅读全文
摘要:Huffman树 题目链接:AcWing 148. 合并果子 利用贪心的思想,每次从当前所有堆中,挑出最小的两堆合并即可。 #include <iostream> #include <algorithm> #include <queue> using namespace std; int main(
阅读全文
摘要:区间问题 区间问题 1. 区间选点 2. 最大不相交区间数量 3. 区间分组 4. 区间覆盖 区间选点 题目链接:AcWing 905. 区间选点 题目描述 给定 个闭区间 ,请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位
阅读全文
摘要:记忆化搜索 题目链接:AcWing 901. 滑雪 题目描述 给定一个 行 列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 行第 列的点表示滑雪场的第 行第 列区域的高度。 一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离
阅读全文
摘要:树形DP 题目链接:AcWing 285. 没有上司的舞会 题目描述 Ural 大学有 名职员,编号为 。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 给出,其中 。 现在要召开一场周年庆
阅读全文
摘要:状态压缩DP 蒙德里安的梦想 问题描述 求把 的棋盘分割成若干个 的长方形,有多少种方案。 例如当 时,共有 种方案。当 时,共有 种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行,包含两个整
阅读全文
摘要:数位统计 DP 数位统计DP是与数字相关的一类计数问题。在这类题目中,一般给定一些限制条件,求满足限制条件的第 小的数是多少,或者求在区间 内有多少个满足限制条件的数。解决方法为先利用动态规划进行预处理,再基于拼凑思想,用“试填法”求出最终的答案。 题目链接:AcWing 3
阅读全文
摘要:区间DP 到目前为止,我们介绍的线性 DP 一般从初态开始,沿着阶段的扩张向某个方问递推,直至计算出目标状态,区间 DP 也属于线性 DP 中的一种,它以“区间长度”作为 DP 的“阶段”,使用两个坐标(区间的左、右端点),描述每个维度。在区间 DP 中,一个状态由若干个比它更小且包含于它的区间所代
阅读全文
摘要:线性DP 线性DP 数字三角形 最长上升子序列(LIS)问题 最长上升子序列(LIS)问题 II 最长公共子序列(LCS)问题 最短编辑距离 编辑距离 具有线性“阶段”划分的动态规划算法被统称为线性DP。 数字三角形 题目链接:AcWing 898. 数字三角形 问题描述 给定一个共有 行的
阅读全文
摘要:博弈论 博弈论 NIM 博弈 台阶-Nim游戏 公平组合游戏ICG 有向图游戏 Mex 运算 SG 函数 有向图游戏的和 定理 集合-Nim游戏 拆分-Nim游戏 NIM 博弈 给定 堆物品,第 堆物品有 个。两位玩家轮流操作,每次操作可以任选一堆,拿走任意数量的物品(可
阅读全文
摘要:背包问题 背包问题 0/1 背包问题 完全背包 多重背包 二进制拆分法 分组背包 背包是线性 DP 中一类重要而特殊的模型,本文将其作为单独一部分进行总结整理。 0/1 背包问题 0/1 背包问题的模型如下: 给定 个物品,其中第 个物品的体积为 ,价值为 。
阅读全文
摘要:容斥原理 设 为有限集合, 表示集合 的大小,则: $$ \vert \bigcup\limits_{i=1}^{n}S_i \vert = \sum\limits_{i=1}^{n} \vert S_i \vert - \sum\limi
阅读全文
摘要:组合计数 组合计数 求组合数 I —— 预处理组合数 求组合数 II —— 预处理阶乘 求组合数 III —— 卢卡斯定理(Lucas) 求组合数 IV —— 高精度 满足条件的01序列 —— 卡特兰数 求组合数 I —— 预处理组合数 给定 组询问,每组询问给定两个整数 ,,请
阅读全文
摘要:高斯消元 高斯消元 高斯消元解线性方程组 高斯消元解异或线性方程组 高斯消元解线性方程组 通过初等行变换把增广矩阵化为阶梯型矩阵,并回代得到方程的解 适用于求解 包含 个方程, 个未知数的多元线性方程组 前置知识:初等行(列)变换 把某一行乘一个非00的数 (方程的两边同时乘上一个非0
阅读全文
摘要:扩展欧几里得算法 扩展欧几里得算法 欧几里得算法/辗转相除法(Euclidean algorithm) 裴蜀定理(Bézout 定理) 扩展欧几里得算法(Extended Euclidean algorithm) 求解线性同余方程 欧几里得算法/辗转相除法(Euclidean algorithm)
阅读全文