将$2^k$种状态分开进行折半搜索,我怎么就想不到?
题意
教练有一些钱,你也有一些钱,告诉你每天必须花费的钱数,你在一天当中要么只花自己的钱,要么只花教练的钱,问你最多能花教练多少钱。
思路
实际上对于每天都有花和不花两种状态,这样的话就是$2^{30}$种状态,肯定不行,我们可以先枚举前一半的状态,存一下然后排序,然后枚举后一半状态的时候,对前一半的状态进行折半搜索。
1 |
|
云腾致雨,露结为霜
将$2^k$种状态分开进行折半搜索,我怎么就想不到?
教练有一些钱,你也有一些钱,告诉你每天必须花费的钱数,你在一天当中要么只花自己的钱,要么只花教练的钱,问你最多能花教练多少钱。
实际上对于每天都有花和不花两种状态,这样的话就是$2^{30}$种状态,肯定不行,我们可以先枚举前一半的状态,存一下然后排序,然后枚举后一半状态的时候,对前一半的状态进行折半搜索。
1 | #include <set> |