Tricks 合集

开坑记录一下做题过程中遇到的有用有推广意义的 tricks

数学

概率期望

Min-Max 容斥

对于一类求形如 “...... 都被满足” 或者 “至少满足一个条件” 等字眼时,不放考虑其对应的 MinMax 是否方便求解。

  • 省选模拟赛 3.13,T1 :对于每一行每一列的 Min 是较容易直接计算的,再套用 Min-Max 容斥即可。

数据结构

寻求局部单调性

一类求解最大/最小值的题目,也许全局没有单调性,无法直接二分。但如果 树链、子树 等存在单调性,可以利用这个分段二分。

  • 省选模拟赛 3.14,T3 :枚举起点,每一条重链上存在单调性,直接线段树上二分即可。

DP

计数

拆贡献

一类题目要求对所有情况下计数,每种情况中每个部分有其对应的贡献,可以考虑对于每个部分计算其在所有局面中的贡献。

  • ARC140D - One to One 每一个连通块必定包含恰好一个环,考虑每一个环出现的次数即可。

可重序列计数极大/极小区间

极大区间 定义:若 [l,r] 为极大区间,则 [l,r] 去重之后与 [l,r+1],[l1,r] 去重后的结果不同。

极小区间 定义类似。

一类序列上计数问题可以转化成对 极大区间 或者 极小区间 来计数,具体选择哪个看题目中哪个会有更加良好的性质。

树形 dp

最优性问题

图论

树形结构

剥叶子

对于一些相邻节点存在限制关系的问题,可以考虑从叶子的情况入手(因为与之相邻的仅有一个)。

  • ARC156C - Tree and LCS 对于每一层叶子结点标号重排即可,然后将其删除,继续考虑剩下的节点。
  • ARC143E - Reversi 每次可以确定所有叶子结点与其父节点翻转的先后顺序,建出拓扑图即可。

构造

贪心

二进制运算从高位到低位贪心

从高位到低位考虑,判断每一位能否是 1 ,贪心的选取结果就行。

ps. 这个 tricks 在很多题目里都有见到,但是还是不是很能切掉。

  • 省选模拟赛 3.10,T1 :将合并操作抽象为树,每次枚举某一位在不影响之前位的情况下是否可以为 0
posted @   _YangZJ  阅读(113)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩