noip宝藏
链接:https://www.luogu.org/problemnew/show/P3959
题解:
考试的时候完全没掌握状压dp。。。这么水的题目。。
显然可以用f[i][s]表示当前走了i步状态为s
那么转移就枚举剩余的子集(补集的子集)
然后判断一下连通性就好了
这样的话是n^3*3^n(好像有人优化了一下常数就过了----然而我是不知道怎么优化)
但显然的是判断连通性可以预处理出来(4^n)
这样时间复杂度就是(4^n+n^3*3^n) 过12的数据还是很稳的
代码: