Meet in the middle 1
整点洋名玩玩
折半搜索,一个让暴搜/状压的复杂度上根号的算法
内涵还是比较好理解的:
就是当前一个\(0/1\)表示的全部状态,我从中间截断分别处理
然后用的时候我再把这些东西拼起来就行了
所以怎么拼起来呢?
显然不能暴力拼,否则时间复杂度回去了
我做到的题(虽然只有两道)里都是用双指针做到合并的较低复杂度
然后一个状压的小技巧:
就是预处理的时候可以从已经预处理过的"当前状态减去lowbit
"得到
这样时间复杂度少一个\(n\)的常数
大致的流程
1.状压折半预处理 2.双指针拼凑