吹课四

Todo

  1. 树状数组二维偏序

博弈论

  1. 按照博弈状态建图跑拓扑排序判断先后手赢。

组合计数

  1. 就两种:dp 或 硬推。

  2. 等比数列。i=1npi=pn+1pp1

  3. 观察到一个数列有关于 1 3 3 11 4 6 4 1,就应该想到 binomial 了。

  4. 组合计数不一定为 dp,优化不了考虑一个式子算答案。

  5. 相邻两数操作后变成一个数,操作后整个序列长度减一的操作:大多和杨辉三角有关,因为贡献系数是杨辉三角。

  6. 正难则反,难解就反过来容斥。

  1. 将树分成大小为 [B,3B] 的若干连通块,直接分。多余的点抛给父亲。e.g. prob

并查集

  1. 当经过一些对边的贪心处理(e.g. 边权从小到大排序)后,如果要维护的信息可以再两颗树合并时维护,考虑并查集。

树的直径

树的重心

LCA

  1. 差分。

哈希

  1. 需要 O(1)O(n) 的东西,大概率是哈希。

  2. 集合判相等,考虑集合哈希(赋随机权然后异或)(权值 n 着重考虑,如果否也可以离散化。e.g. prob

DS

莫队

  1. 要求不强制在线,相邻区间递推复杂度较小。

线段树

  1. 必须满足信息可合并。

  2. 一些区间满足(一个点 / 一条线要求在区间中),考虑通过画图,转换为扫描线。e.g. prob

分块

  1. 莫队,线段树等都不可行,使用分块。

DP

  1. 先写爆搜,再优化到 DP。

  2. 背包的状态描述一般为前 i 个元素,序列 DP 的状态描述一般为第 i 个元素,或,第 i 个元素结尾。

  3. 期望 DP:(优先考虑级从前往后)结尾状态确定:逆推(已经...(如何)到结尾状态还需要的期望,f[结尾状态]=0),开头状态:顺推(已经...后的期望,f[开头状态]=0),每种情况概率确定:状压。

  4. 排列 DP 的一种题型:求满足条件的排列个数,状态往往可以设计为:枚举当前填第 i 个数 的排名为 j 的 排列方案数。e.g. prob

  5. 前缀和优化。

  6. 有关上升子序列的个数的 DP :fi,j 为上升子序列长度为 i,末尾下标为 j 的 LIS 个数。e.g. prob

  7. yao qiu he wei yi ge shu de bei shu: f[i][j = 0 ~ m - 1] -> di yi ge yuan su, yu shu wei j.

贪心

  1. 爆搜优化成 DP 仍然不可行,考虑贪心。

暴力

  1. Subtasks 多劳多得。

  2. 爆搜 + 剪枝。

  3. n! 的暴力往往可以变成 2n 暴力。

式子计算

  1. a[binary_op]b 可以逐位考虑答案。

杂项

  1. 仔细检查 ez 题边界条件:越界,0,爆 ll

  2. 要证明一个数组中所有等于某个值的数,可以考虑让它既小于等于又大于等于这个值的数的并集。比如统计一个序列等于 3 的个数,考虑 33 的并集。可以用于简化问题。e.g. prob。多用于计数。

  3. 统计一个序列中连续子区间的答案,可以考虑固定左端点统计右端点 / 固定右端点统计左端点,然后通过组合统计。

  4. 序列要求交替满足条件:奇偶性分类。

  5. ni -> 数论分块,ni -> 有可能是根号分治,iB,记录 iib,记录 ni 的结果。

  6. LIS:LIS 方案,填数用两种方法:按下标填,按值域填。

posted @   PikachuQAQ  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示