随笔分类 - OI
摘要:数位dp T3: 应该先从这道题入手数位dp,首先理解数位dp,dp了什么东西 它是把一个数从低位拆到高位,相当于是较低位的方案数是较高位的子问题 个人认为数位dp写记忆化搜索更容易理解一点 看这道题,首先我们让我们分别求 \(0~9\) 在 \(l~r\) 出现的次数,我们先把 \(0~9\) 分
阅读全文
摘要:区间dp 先在小区间上进行dp得到最优解,然后再合并小区间的最优解求得大区间的最优解,解题时,先解决小区间的问题,再将小区间合并为大区间,合并操作一般是将两个相邻区间合并 注:合并顺序从小区间到大区间,因该先从小到大枚举区间的长度,递推出j在哪里 一本通题解 T3: 2025.1.23补档: 我之前
阅读全文
摘要:线性dp理解 递推/记忆化搜索,有很多种理解方式 递归重叠子问题的记忆化搜索: 像这里例如 \(f[3]\) 可以通过一次计算得到,保存答案,下一次直接调用即可,省去很多复杂度 我们从此引出dp第一个性质:最优子结构 大问题的最优解包含小问题的最优解,并且小问题的最优解可以推导出大问题的最优解 递推
阅读全文
摘要:前言 在整理总结题解的时候突然发现倍增这一章竟然连题解都没有写过,直接晕厥 T1: 直接做 T2: 首先根据倍增思想,现预处理出开 \(2^j\) 次车,A/B先开车所到达的地点,和开的距离 这样两种查询,都可以根据预处理的来倍增求出 然后如何预处理呢? 我们维护一个链表,链表开始是所有城市按照高度
阅读全文
摘要:「基础算法」 第1章 递推算法 博客链接 一般有具体的情境,可以通过直接的模拟转移过程来实现递推,T2,T4,T9 找到已知状态和所求状态的差别和联系,想办法将所求转化为已知进行转移,一般要用到分讨,T1,T3 根据题目将问题转化,增维,然后转化后进行递推,T8 第2章 贪心算法 博客链接 一般像题
阅读全文
摘要:前置芝士 分块 算法理解 一种暴力顺序的优化 离线+暴力+分块 通常用于不带修只查询的一类问题 模板题P1972 [SDOI2009] HH的项链 首先使用暴力法求解此题 我们设我们有一个 \(L,R\) 表示现在扫到 \([L,R]\) 区间,对于一个询问 \((l,r)\) 我们暴力的将 \(L
阅读全文
摘要:写在前面 非常简单的分块,使我开心的转圈,稍微看了一下 oi wiki 就懂了,妈妈再也不用担心我的暴力了 正文 分块,非常优雅的暴力,本质是上是通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。 例如(博客萌新好不容易整的): \[\begin
阅读全文
摘要:算法理解 DP的效率取决于三方面: 状态总数 每个状态的决策数 状态转移计算量 对应的优化方式: 状态总数的优化:类比搜索剪枝,去除无效的状态;降维,设计dp状态时用低维的dp 减少决策数量:状态转移方程的优化,例:四边形不等式优化,斜率优化 状态转移计算量优化:用预处理减少地推时间;用hash表,
阅读全文
摘要:算法理解 对于随机变量 \(X\),有 \(n\) 个可能的取值,取值为 \(x_i\) 有 \(P(x_i)\) 的概率,则它的数学期望则为 \(E(X)=\sum_{i=1}^nx_iP(x_i)\) 性质 其中期望的线性限制最重要,它可以将两个完全独立的期望拆分开来单独计算,详见例题 T1:
阅读全文
摘要:NIM游戏及其证明 题目描述即为T1,不多赘述 有向图游戏及SG函数 而对于由\(n\)个有向图游戏组成的组合游戏,设它们的起点分别为\(S_1, S_2, \ldots, S_n\),则有定理: 当且仅当\(\text{SG}(s_1) \oplus \text{SG}(s_2) \oplus \
阅读全文
摘要:加法原理 乘法原理 排列数 从 \(n\) 个数中任取 \(m\) 个元素的排列的方案数,表示为 \(A^m_n=\frac{n!}{(n-m)!}\) \(0!=1\) 全排列 \(A^n_n\) 组合数 从 \(n\) 个元素中取出 \(m\) 个元素的组合的个数,表示为 \(\dbinom{n
阅读全文
摘要:基本概念 同余 欧拉定理 欧拉定理推论及扩展欧拉定理 扩欧不会证(悲 费马小定理 ps:这里对费马小定理的证明需要使用欧拉定理,建议先学习欧拉定理 扩展欧几里得算法 注意:ybt上的题解写的是错误的,我的博客也被误导了,将下文中所有 \(gcd(x,y)\) 手动替换成 \(gcd(a,b)\),抱
阅读全文