这是更新日志 \(2021/2/9\) 代数推导 \(2021/2/10\) 组合意义,构建 TOC 目录 枚举子集 复杂度证明 代数推导 组合意义 Summary 枚举子集 枚举子集为什么是 \(O ...
F 对于一张比赛图,经过缩点,会得到dag,且它一定是transitive的,因此我们能直接把比赛图缩成一个有向链。链头作为一个强连通分量,里面的所有点都是胜利的 定义F win 表示win集合作为赢家的概率,我们有 ans sum win in all F win win 显然win集合内的点构成一个强连通分量,并作为链头。win集合内的点一定向集合外的每个点连边 考虑如何求解F win 我们定 ...
2021-08-30 22:16 0 132 推荐指数:
这是更新日志 \(2021/2/9\) 代数推导 \(2021/2/10\) 组合意义,构建 TOC 目录 枚举子集 复杂度证明 代数推导 组合意义 Summary 枚举子集 枚举子集为什么是 \(O ...
鸟泉学长告诉我的,今天想到了就顺便记上。 设S表示一个01状态集,那么它的所有非空子集x可以通过以下代码枚举。 简单说明下原理(证明以后补上?): x = (x-1)&S实际上是把S中的0全部忽略,并不断减1的结果,比如S=1011,则x分别为:1011, 1010 ...
枚举一个二进制集合的子集,可以看做原集合忽略0之后不断-1 就有了这样一种算法: i - 1使得末尾的0全部变成1,但是由于&s,原来是0的位无论如何也不会变成1,但是原来是1的位就形成了不断-1的模式 ...
(先处理好基本的位运算的东西) 为了更好的理解状压dp,首先介绍位运算相关的知识。 1.’&’符号,x&y,会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如3(11)&2(10)=2(10)。 2.’|’符号,x|y,会将两个十进制数在二进制下进行 ...
状压dp的含义 在我们解决动态规划题目的时候,dp数组最重要的一维就是保存状态信息,但是有些题目它的具有dp的特性,并且状态较多,如果直接保存的可能需要三维甚至多维数组,这样在题目允许的内存下势必是开不下的,那么我们能不能想个办法,把它压缩成一维呢?对,二进制.一般的动规题目数据范围都不会 ...
集合枚举子集-学习笔记 算法 有一个集合,请输出它的所有子集。 子集,即为被这个这个集合包括的所有集合,包括空集。那么显然,假如有 \(n\) 个元素,那么有 \(2^n\) 个子集。如何枚举子集呢? 首先有一个显然的方法:用 \(2^n\) 的 dfs 枚举。但这样有弊端:时空较大 ...
2018过农历新年这几天,学了一下状态压缩动态规划,现在先总结一下。 状态压缩其实是一种并没有改变dp本质的优化方法,阶段还是要照分,状态还是老样子,决策依旧要做,转移方程还是得列,最优还是最优,无后还是无后,所以它比较好理解。 状压,顾名思义就是要将一些状压想办法压缩起来(可以压 ...
一、关于状压 dp 为了规避不确定性,我们将需要枚举的东西放入状态。当不确定性太多的时候,我们就需要将它们压进较少的维数内。 常见的状态: 天生二进制(开关、选与不选、是否出现……) 爆搜出状态,给它们编号 1. 状态跟某一个信息集合内的每一条都有关。(如 dp 套 dp ...