2024 笔记

序言

  • 梦游记的笔记,半睡半醒,很多都没理解,只是简单地记了一下,有很多可笑的谬误和胡言乱语的地方,恳请各路大佬指出

2.15

\(\color{red}{Unsolved}\) :

  • 同余最短路 \(\color{skyblue}{P2371}\)
  • 二进制分组
  • 线段树优化建图
  • 差分约束 \(\color{skyblue}{P7624}\)
  • 严格次小生成树:要注意细节

\(\color{aqua}{Trick}\) :

  • 没有可行解法时考虑改建图方式
  • 拓扑排序的同时可以求最长链,从 \(degree_i = 0\) 开始找
  • 跑 dfn 后,按照 \(\{1, 2\}\)\(\{2, 3\}\),…………,\(\{n, 1\}\) 连边,每条边恰好覆盖 \(2\) 次,答案是 \(\frac{sum}{2}\)

\(\color{Aquamarine}{Kownledge}\) :

  • 线段树要满足结合律,否则钦定运算顺序法则

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 线段树现算 \(l, r\) 可以节省很大时间和空间
  • \(e^{ix} = cosx + isinx\)

2.16

\(\color{red}{Unsolved}\) :

  • lxl的线段树技巧

\(\color{aqua}{Trick}\) :

  • 时光倒流技巧
    • 并查集上删点,转化为从后往前遍历删掉的点,加出边
    • 区间覆盖问题,从后往前跑,均摊 \(O(n)\)
  • 反向操作
    • 利用全局标记
    • 除了常数个元素外、其他都操作的问题,转化为反向操作常数个元素,然后操作全局标记,最终答案是 元素+全局标记 (\(\color{skyblue}{P2827 蚯蚓}\))
  • 线段树
    • 线段树维护连续子段长度,每个节点记录 presuf,答案是 \(\max(\{ls, rs, ls.suf + rs.pre\})\)
    • 未完工

\(\color{Aquamarine}{Kownledge}\) :

  • 线段树上二分可以做到单 \(\log\), 二分+\(query\) 是双 \(\log\)

  • \(n\) 开平方并下取整 \(\log_{2}\log_{2}n\) 次会变为 \(1\)

  • \(\log^2{n} = \log{n} \log{n}\)

  • 调和级数复杂度是 \(log\) 级的

  • \(\forall a \in N^*, 若 a 与 p 互质, 则有 a^{\varphi(p)} \equiv 1 (mod\ p)\)

    • 推论 \(: 在上述条件下可推出\ a^b \equiv a^{b\ mod\ \varphi(p)} (mod\ p)\), 其中 \(b \in N^*\).
    • \(p\) 为质数,则 \(\varphi{(p)} = p - 1\)
    • 进一步地,推论变为 \(a^b \equiv a^{b\ mod\ (p - 1)} (mod\ p)\)
  • \(\lfloor x - xp \rfloor \Leftrightarrow \lfloor x (1 - p) \rfloor\ \nLeftrightarrow \ x \lfloor 1-p \rfloor\)

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 多个数组范围不一样,不要模糊地共用 N ,写清楚了,防止 \(RE\)\(MLE\)
  • 对于感觉推到头但是复杂度好像不对的算法,先打一打别急着重构,仔细分析复杂度,可能均摊过掉,或者是 \(O(松)\)(bushi, 即使复杂度确实不对可以考虑接着优化、当作拍子或者骗分
  • 线段树想清楚下传顺序再写
  • 有多个操作的题看清 opt 和操作的关系,先构建好主函数和大框架,不要凭做题经验写不然会虚空调试制杖浪费时间

2.17

\(\color{red}{Unsolved}\) :

  • 树剖
  • 虚树
  • 启发式合并
  • 可持久化并查集、值域线段树

\(\color{aqua}{Trick}\) :

  • 利用等式/不等式的小变换
    • \(\color{skyblue}{P4216}\): 1操作使点 \(x\) 开始每秒 \(+1\),若要满足在 \(i\) 时刻某个元素 \(>c\) ,转化为在 \(i - c\) 时刻该元素 \(> 0\)
  • 树剖的应用场景
    • 路径不能差分
    • 同时有路径和子树的修改
  • 维护 \(f_i\) 是点 \(i\) 到根路径上点权和
    • 单点改 \(\rightarrow\) 子树改 \(\rightarrow\) 区间改(利用 \(dfn\) 连续的性质)
    • 区间查 \(\rightarrow\) 单点查
  • 值域线段树上二分处理区间 \(k\)
    • 两棵树,分别到区间左端点的前一个和区间右端点
    • \([1, l-1]\)\([1, r]\)
    • 各自的左儿子作差得 \(x\),$x + y - lca(x, y) - lca(x, y)_{fa} $,二分
      • \(x \leq k\) 走右节点
      • 否则向下递归
    • (看以前的笔记比较异或了,不太理解,以后修)

\(\color{Aquamarine}{Kownledge}\) :

  • 主席树下传懒标记的时候要新建一个点

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 改掉 #define int long long 的习惯,\(MLE\) 了以后很难受,要学会分析变量处理的数字范围
  • \(DS\) 的时候如果有多个做右端点,写清楚了不要混
  • 主席树新建节点的时候如果需要给 l, r 赋值,不要忘记
  • 很久没有突破可以从有特殊性质的部分分入手,有可能推出来小性质

2.18

\(\color{red}{Unsolved}\) :

  • 补模拟赛题

\(\color{aqua}{Trick}\) :

  • 求出一个部分答案即可得到另一部分答案的一类问题(例如折半搜索),不要瞻前顾后地想状态,先独立考虑其中一个部分,另一个部分不考虑,类似于多项式的对称性
  • 利用鸽巢原理,考虑到一定有一个部分的开头两个位置在前三个位置中,可以直接优化掉一个 \(n\)

\(\color{Aquamarine}{Kownledge}\) :

  • 期望具有可加性,线性性,不完全积性
  • 线代总结单开文章,咕咕咕

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 对于口胡出来比较放心的题,先写完再往后看,不然会失去对时间的分配权
  • 对于难度和自身水平不匹配的比赛,早打暴力

2.19

\(\color{red}{Unsolved}\) :

  • 斜率优化写题
  • 学习wqs二分
  • 决策单调性
  • \(slope\ trick\) 完全没懂

\(\color{aqua}{Trick}\) :

  • 环上问题断环为链再倍长
  • 利用决策单调性时,如果价值函数是一维 \(w_j\),可以改为二维的 \(w_{i, j}\), 其中定义 \(w_{i, j} = w_{j-i}\)
  • dp式子拆掉 \(\max/\min\) 可以利用单调栈维护最值
  • 有关同余的题目如果操作区间是 \([1, n]\),可以考虑转化为 \([0, n -1]\)

\(\color{Aquamarine}{Kownledge}\) :

  • 四边形不等式:
    • 被包含 \(\le\) 包含
    • 交叉 \(\le\) 包含
  • 凸函数相加仍是凸函数
  • wqs二分再套四边形不等式优化可以消掉一个 \(\log\)
  • wqs二分前提:估价函数是凸函数,上凸下凸都可以
  • 斜率优化
    • 列出暴力 dp 式
    • 拆分成变量和常量
    • 简单变换化成斜率形式
    • 判断上凸还是下凸

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 环上问题倍长以后空间开2倍防止MLE
  • DP要多做题,多学套路
  • 可以看题解,但是看完以后必须总结,方法、技巧、思路

2.20

\(\color{red}{Unsolved}\) :

  • exKMP懂了还没写
  • 自动机一个不懂

\(\color{aqua}{Trick}\) :

  • 在失配树上,border个数是深度,几何是根到该节点路径上的点集
  • 求最长公共border就是在失配树上求LCA

\(\color{Aquamarine}{Kownledge}\) :

  • AC 自动机转化成作为某个前缀的某个后缀出现的次数和
  • exKMP:\(Z_i = \max{\{x|s[0,x)=s[i,i+x)\}}\)
  • KMP:\(Z_i = \max{\{x|s[0,x)=s(i-x,i]\}}\)

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 最短路不要看反 \(vis\)\(dis\)
  • char 数组最大开 5e8
  • 串串题多在纸上手玩,考虑清楚下标边界问题

2.21

\(\color{red}{Unsolved}\) :

  • 模拟赛补题

\(\color{aqua}{Trick}\) :

  • \(1111...1\) 可以化成 \(\frac{10^n - 1}{q}\)

  • 枚举二进制位,可以方便地统计 \(xor\) 操作的贡献,\(0\)\(1\) 的个数分别是 \(f_i\)\(n - f_i\)

  • \(2|k, k \not ={2}\),求最小的 \(i\),使得 \(10^i \equiv 1 \ (mod\ 9k)\),可以用 \(exBSGS\)

\(\color{Aquamarine}{Kownledge}\) :

  • 矩阵快速幂不能用扩展欧拉定理9

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 每个题都要想,从低分往高分推
  • \(MLE,TLE\) 可能由 \(WA\) 引起,所以尽量先修 \(WA\)

2.22

\(\color{red}{Unsolved}\) :

  • \(\color{skyblue}{P2455}\)

\(\color{aqua}{Trick}\) :

  • 常系数齐次线性递推中,可以考虑把一些不好处理的系数转化为序列中常数项的常数变换或其他已知项

\(\color{Aquamarine}{Kownledge}\) :

  • 高斯消元法可以区分无解和自由元
  • 高斯-约旦消元法本身不能区分无解和自由元,但可以改进,\(\color{skyblue}{P2455}\)
  • 判零以小于 eps 为准

\(\color{LemonChiffon}{Tips/Skills}\) :

  • 矩乘要注意运算的次序
  • 推式子看不出来递推关系时,可以具象地代入一些东西(不一定是常数),可能发现小性质
  • 推完的式子检验无误后再写
posted @ 2024-02-27 00:01  diamond_plus  阅读(28)  评论(0)    收藏  举报