我上网一搜折半搜索,结果跳出来的为什么全是二分??????????????????????????气死我了。
回归正题,折半搜索指将整个搜索过程分为两部分,并对两部分分别进行搜索,最后得到两个答案序列,将这两个答案序列进行合并,得到最终的答案。合并时,我们一般使用二分或尺取法合并,这一是meet in the middle最难的一部分。这样可以大大降低复杂度,比如原来的这样就变成了
。来看一些题吧。
很经典的题目了。首先,可以状压枚举每种情况,但是TLE,所以考虑折半搜索。将前一半的搜索状态存入a数组,后一半存入b数组。难点主要在于最后答案的组合统计。我们可以现将a或b数组sort,然后通过枚举另一个数组中的状态,来实现统计答案。令pos为当前枚举的x的第一个
,那么在pos之前的位置都可以贡献答案,所以ans+=pos-1。那么找pos的工程可以用upper_boun

本文介绍了折半搜索在两个经典算法题目中的应用,包括动态规划求解和状态重复的处理方法,展示了如何通过折半策略优化搜索过程并解决计数问题。
最低0.47元/天 解锁文章
577





