摘要: 状压DP,设dp[s]表示考虑了前|s|个位置,填了s里的这些数。转移时枚举下一个位置上的数i,考虑它和前面的数、后面的数,分别会产生哪些代价。时间复杂度O(2^mm^2)。发现对(s,i),这个代价可以通过递推,预处理出来,时间复杂度降为O(2^m*m)。但是预处理一个这样的数组,空间复杂度O(2^m*m),无法承受。可以按集合大小,从小到大,一边DP,一边处理代价数组。用滚动数组,或者stl-queue优化空间 阅读全文
posted @ 2020-06-28 10:24 duyiblue 阅读(621) 评论(3) 推荐(1) 编辑