【刷题笔记】[ABC180F] Unbranched
【刷题笔记】Unbranched
题意
求\(N\)个点,\(M\)条边且满足以下条件的图的数量:
1.图中无自环;
2.每个点度数最多为2;
3.连通块大小的最大值恰好为L。
答案对 \(10^9+7\) 取模。
\(1\le M,L \le N,2\le N \le300\)
思路
注意构造出来的图,不一定是联通的,所以容易联想到将一个联通分量设为一个阶段。由于构造方案,不光与点数有关,还与图的边数有关,所以设\(f_{i,j}\)表示有\(i\)个点\(j\)条边时最大联通分量是\(L\)时的方案数。
设\(i\)表示当前图的总点数,\(j\)表示当前图的总边数,\(k\)表示当前联通分量的点数。
注意性质,如果一个图中的每个点度数小于等于2,那么形成的图一定是一条链或一个环或几个散点。
因此在枚举当前联通分量的点数时,不用在枚举他的边数,因为这个图只有三种情况,所以边数:
1.边数=点数-1,此时是一条链
2.边数=0,此时是一个点
3.边数=点数,此时是一个环
考虑当前联通分量是一个环,那么这\(k\)个点就可以从\(n-(i-k)\)个点中选择,但是注意,从\(1,2,3,4\)个点中选\(1,2\)点,和选择\(3,4\)点是一样的,因为余下的点也会在以后的转移中计算,此时就会有几种情况被重复计算,所以我们不妨钦定\(1\)个点在当前所选点集中,此时就有
中选法,这样就能做到不重不漏
在考虑环中点的排列情况,此时为了不重不漏,还是先固定一个点,剩下的有\(k-1\)个点,此时方案数就是
注意选定\(1\)时剩下三个点排列分别为\(2,3,4\)和\(4,3,2\)时,是相同构造,因此是环时的方案数为
在考虑是一个链时,与环时大同小异,但是此时,排列时不需要钦定一个点了,因为链不是首尾相接的,直接放公式
于是,\(DP\)转移方程
因为答案是恰好为\(L\)的方案数,所以利用容斥原理,跑两遍,一遍最大为\(L\)\(L-1\)答案就是两次的\(f_{n,m}\)做差
因为题目还要取余,也就是说还要求\(2\)的逆元,这里放一个求\(2\)的逆元的好方法,先放公式
证明
因为
所以
\(attention\)
1.在预处理组合数和阶乘时,都要从\(0\)开始,一般\(DP\)赋初值都从\(0\)开始
2.特判k=1时,此时就是\(1\)个点,不用除以2

浙公网安备 33010602011771号