「雅礼集训 2018 Day1」图 (dp套dp)
如果我们知道了图,我们统计交错路的方法:
设\(g_i\)表示以\(i\)结尾的交错路数量的奇偶性。
按照拓扑序转移
\(g_v=(1+\sum{g_u}) \mod 2\),\(ans=(\sum g_i)\mod 2\)。
我们考虑从\(1 \sim n\)加入点,
首先,如果和\(i\)相连的\(j\)与\(i\)异色或者\(g_j=0\),那么这条边连不连都不会影响\(g_i\)
然后我们随便把一个与\(i\)异色且\(g_j=1\)的\(j\)插入线性基,那么剩下的\(g_j\)也可以乱选,然后通过选不选这个线性基的数来控制\(g_i\)的奇偶性。
所以我们可以设\(f[i][0/1][0/1][0/1]\)分别表示添加了\(i\)个点,是否有点颜色是黑且g为1,是否有点颜色为白且g为1,\(\sum g_i\)的奇偶性。
转移考虑枚举当前加入的点的\(g\)的奇偶性。