题解:qoj5411 杏仁

题意:定义一个图源汇点 \(s,t\) 固定的图为杏仁图,当且仅当可以找到一个路径划分 \(S_1,S_2,\cdots S_k\),使得所有边都在路径中出现且仅出现一次,并且所有路径的交点仅为 \(s,t\)。一个图的杏仁子图定义为为其子图且是杏仁图的子图。给定一个图和 \(s,t\),求对于每个点 \(u\),满足边 \(s\to u\) 在源汇为 \(s,t\) 的杏仁子图内的杏仁子图的个数。\(n\le 22\)

做法:

考虑这个杏仁子图本质上就是我除了 \(s,t\) 外是若干条链。那么我考虑提前处理出来以 \(i\) 为链结尾,目前用了 \(S\) 集合 的点构成链的方案数,记为 \(f_{i,S}\),转移显然可以做到 \(O(n^22^n)\)。然后直接 exp 得到一个集合的情况,这样我就可以求出来对于一个集合的点加上 \(s,t\) 构成杏仁图的方案数,设为 \(g_S\)

然后考虑怎么求答案,我考虑枚举点 \(u\) 及他所组成的一条链 \(S\),这个方案数已经用 \(f_{u,S}\) 统计过了,然后剩余的点任意即可,我们可以直接对 \(g\) 求高维前缀和,把两个方案乘在一起即可。

注意一些细节,对于 \(u=t\) 的情况需要判一判,\(s\to t\) 这条边可任意选。

posted @ 2025-12-06 17:11  LUlululu1616  阅读(0)  评论(0)    收藏  举报