csp-s模拟48

T1:
简单dp

T2:
考虑a-b-c-d,枚举b-c这条边,(ans= sum (deg_b-1)*(deg_c-1))
发现算错了,因为还要保证(a!=d)
考虑当(a==d)时,a(d)-b-c构成了一个三元环,考虑点数较少,用bitset快速统计
复杂度为(O(n^3 / 32))

T3:
题意为所有点向自己的子集连边
考虑建出(2^{20})个虚点,所有点向与自己权值相同的虚点连正反两条边
然后再在虚点间每个点只向二进制少一位的点连边,发现空间爆炸。
于是在虚点间直接转移,不连边

T4:
考虑每行顺序不变,实际上是枚举集合,状压就完了

T5:
考虑这是个博弈套博弈的问题
对于内层的博弈,可以建出tire树dp
对于外层的博弈,考虑如何获得最后的胜利:
1.先手可以控制自己的胜败,则先手必胜
2.先手只能控制自己胜利,则奇数轮时胜利
3.其他情况后手必胜
所以内层dp时需要处理必胜必败两种情况(可以压在一起dp)

原文地址:https://www.cnblogs.com/Gkeng/p/11790375.html