一道神仙题
题目链接
这个数据很状压啊
但是\(type=2,3\)的有点麻烦.
令\(f[S]\)表示集合为\(S\)的完美匹配期望.
一条边相当于一种转移.
我们考虑把两条边分开计数,各有\(50\%\)的概率出现.
假设第一条边是\((u,v)\),第二条边是\((x,y)\)
如果\(type=2\),那么两条边都出现的概率应该是\(50\%\),然而我们计算的概率是\(25\%\),因此我们要给整个点集加入一个\(25\%\)的偏移量.
同理如果\(type=3\),那么两条边都出现的概率应该是\(0\),那么我们给整个点集加入一个\(-25\%\)的偏移量.
如果这两条边有公共点,那么我们肯定无法同时选择这两条边.那么就不用加偏移量.
然后就可以愉快地状压啦.
状压时有一个常用的小\(trick\)就是钦定转移最高位来减小复杂度.
哦还有一个问题.
我们存不下这个\(dp\)值,开个\(map\)就好啦
代码如下
#include
#include
#include
#include
#include
#include
#include
#include