专栏文章
题解:P6846 [CEOI 2019] Amusement Park
P6846题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipssgqs
- 此快照首次捕获于
- 2025/12/03 17:21 3 个月前
- 此快照最后确认于
- 2025/12/03 17:21 3 个月前
考虑一个 DAG 在边全部反转之后仍然会是 DAG,那么如果有一种反转 条边的方案,就一定有一种与之对应的反转另外 条边的方案。所以我们只需要求出总方案数,然后乘上 即可。
那么怎么求总方案数呢?
考虑状压 DP,设 表示 点集的导出子图反转之后变成 DAG 的方案数。
我们知道 DAG 里一定有一些入度为 的点,删除这些入度为 的点后,我们会得到一个小的 DAG。考虑枚举这些入度为 的点,然后可以从小 DAG 转移。
枚举 的子集 ,将 拆成 和 ,当 是一个独立集的时候, 可以从 转移而来。
但问题是这样做会算重复。比如我们枚举的一个合法的 是 ,那么 和 一定也是合法的,这样同一种方案就被记重了。
考虑一个老生常谈的容斥,当 中点的个数是奇数个时,令它有 的贡献,当点的个数是偶数个时,令它有 的贡献。
于是做完了,最终复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...