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)

posted @ 2019-11-04 09:10  G_keng  阅读(125)  评论(0编辑  收藏  举报