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的数据还是很稳的

代码:

原文地址:https://www.cnblogs.com/yinwuxiao/p/8476640.html