2021 ICPC沈阳 L.Perfect Matchings(树形dp+容斥原理)

Posted lwz_159

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 ICPC沈阳 L.Perfect Matchings(树形dp+容斥原理)相关的知识,希望对你有一定的参考价值。

题目描述

题目链接

题目大意

给你一个2n个点的完全图,从这个图里面删除2n−1条边,这些边形成一颗树,问剩下的图里面点进行完美匹配有多少种方案?

题目分析

本 题 我 们 要 对 一 个 完 全 图 选 匹 配 边 , 而 有 一 些 边 不 能 选 择 ( 2 n − 1 条 边 ) , 我 们 可 以 先 算 出 包 含 这 2 n − 1 条 边 本题我们要对一个完全图选匹配边,而有一些边不能选择(2n-1条边),我们可以先算出包含这2n-1条边 2n12n1 的 所 有 方 案 , 然 后 再 用 总 的 方 案 数 减 去 这 些 方 案 就 行 了 。 的所有方案,然后再用总的方案数减去这些方案就行了。

然 后 我 们 要 求 出 包 含 树 边 的 所 有 匹 配 方 案 , 这 个 可 以 用 树 形 d p 来 求 : 然后我们要求出包含树边的所有匹配方案,这个可以用树形dp来求: dp

状 态 表 示 : 设 f [ u ] [ i ] [ 0 / 1 ] 表 示 以 点 u 为 根 节 点 的 子 树 中 , 有 i 个 匹 配 , 并 且 u 节 点 是 否 参 与 匹 配 的 方 案 数 状态表示:设f[u][i][0/1]表示以点u为根节点的子树中,有i个匹配,并且u节点是否参与匹配的方案数 f[u][i][0/1]uiu

状 态 转 移 : 对 于 一 个 以 u 为 根 的 节 点 , 枚 举 其 每 个 子 节 点 v 状态转移:对于一个以u为根的节点,枚举其每个子节点v uv
此 时 有 三 种 情 况 : 此时有三种情况:

1 、 合 并 u 与 其 子 树 v , 并 且 不 选 u , f [ u ] [ i + j ] [ 0 ] + = f [ u ] [ i ] [ 0 ] ∗ ( f [ v ] [ j ] [ 0 ] + f [ v ] [ j ] [ 1 ] ) ( 选 不 选 v 对 于 该 状 态 1、合并u与其子树v,并且不选u,f[u][i+j][0]+=f[u][i][0]*(f[v][j][0]+f[v][j][1])(选不选v对于该状态 1uvuf[u][i+j][0]+=f[u][i][0](f[v][j][0]+f[v][j][1])v 没 有 影 响 ) 没有影响)

2 、 合 并 u 与 其 子 树 v , 选 u , f [ u ] [ i + j ] [ 1 ] + = f [ u ] [ i ] [ 1 ] ∗ ( f [ v ] [ j ] [ 0 ] + f [ v ] [ j ] [ 1 ] ) 2、合并u与其子树v,选u,f[u][i+j][1]+=f[u][i][1]*(f[v][j][0]+f[v][j][1]) 2uvuf[u][i+j][1]+=f[u][i][1](f[v][j][0]+f[v][j][1])

3 、 合 并 u 与 其 子 树 v , 并 且 加 上 一 个 u − v 的 匹 配 , f [ u ] [ i + j + 1 ] [ 1 ] + = f [ u ] [ i ] [ 0 ] ∗ f [ v ] [ j ] [ 0 ] ( 因 为 要 加 一 个 u − v 的 新 匹 配 , 3、合并u与其子树v,并且加上一个u-v的匹配,f[u][i+j+1][1]+=f[u][i][0]*f[v][j][0](因为要加一个u-v的新匹配, 3uvuvf[u][i+j+1][1]+=f[u][i][0]f[v][j][0]uv 所 以 转 移 前 的 状 态 一 定 都 是 不 带 根 节 点 的 ) 所以转移前的状态一定都是不带根节点的)

计 算 出 所 有 的 状 态 之 后 , 再 回 来 看 怎 么 求 出 最 终 结 果 : 计算出所有的状态之后,再回来看怎么求出最终结果:

对 于 整 个 图 来 说 , 假 设 我 们 一 定 会 选 择 x 条 树 边 , 那 么 方 案 数 就 为 f [ 1 ] [ x ] [ 0 ] + f [ 1 ] [ x ] [ 1 ] , 而 其 余 的 边 对于整个图来说,假设我们一定会选择x条树边,那么方案数就为f[1][x][0]+f[1][x][1],而其余的边 xf[1][x][0]+f[1][x][1] 随 便 选 , 那 么 就 有 可 能 选 到 x , x + 1 , x + 2 , … … 条 树 边 。 随便选,那么就有可能选到x,x+1,x+2,……条树边。 便xx+1x+2
因 为 会 出 现 这 种 选 多 了 的 情 况 , 因 此 我 们 在 求 包 含 树 边 的 情 况 时 , 就 需 要 用 到 容 斥 原 理 。 因为会出现这种选多了的情况,因此我们在求包含树边的情况时,就需要用到容斥原理。

我 们 先 将 求 解 过 程 进 行 拆 分 , 枚 举 0 − n , 表 示 当 前 选 择 至 少 存 在 i 条 树 边 , 方 案 数 为 x = f [ 1 ] [ i ] [ 0 ] + f [ 1 ] [ i ] [ 1 ] 。 我们先将求解过程进行拆分,枚举0-n,表示当前选择至少存在i条树边,方案数为x=f[1][i][0]+f[1][i][1]。 0nix=f[1][i][0]+f[1][i][1] 这 样 就 匹 配 了 2 ∗ i 个 点 , 同 时 剩 下 了 2 ∗ n − 2 ∗ i 个 点 任 意 选 择 , 则 有 y 钟 方 案 数 。 当 前 情 况 的 答 案 即 为 : x ∗ y 。 这样就匹配了2*i个点,同时剩下了2*n-2*i个点任意选择,则有y钟方案数。当前情况的答案即为:x*y。 2i2n2iyxy

补 : y = C 2 n − 2 i n − i ∗ ( n − i ) ! 2 n − k 补:y=\\fracC^n-i_2n-2i*(n-i)!2^n-k y=2nkC2n2ini(ni)!
2021 ICPC沈阳 L.Perfect Matchings(树形dp+容斥原理)

2021ICPC沈阳游记及2021年度总结

2021ICPC沈阳游记及2021年度总结

2021ICPC沈阳游记及2021年度总结

2021 ICPC 沈阳站总结

2021.07.18 ICPC沈阳游记