noip宝藏

题解:

我觉得状压比搜索不知道简单到哪里去了。。

为了练习搜索。。。想了一下这题的搜索。。

然后会发现想想就很容易想到dp。。

最后的搜索大概是这样的

我们会发现有一类搜索都是这样

你会重复(可能是指数级)经历一个状态,但是又无法避免

比如这题

假设你现在都是1,然后有n个点要被扩展成2

那直接暴力dfs枚举连边会算成n!种

所以我们会使用记忆化这种东西

这题里我们可以记忆化每个点的d值,然后算出一个花费

当经历重复状态花费又大于原先的时候就退出

关键在于如何记忆

稳一点建立真正的hash表,但这样空间是mo*n的 比较容易炸

我们考虑用双模数(防止冲突)

然后取两个模数里的答案的较大值 这样相对而言冲突概率很小

想要观察正确性的话可以对拍一下(搜索和记忆化搜索对拍)

另外从最优性剪枝来说

如果剩下点*最小边+当前距离>ans

就退出

网上有题解用n^2的代价去找出剩余点中的最小边

不管这个有用无用,但这个对复杂度是不会造成差的影响的

因为下面要n^2枚举选的边,所以最多常数*2 所以这个我觉得是可行的

搜索中的剪枝要尽量满足与原本就有的复杂度持平

靶形数独那题也是这个道理

猜你喜欢

转载自www.cnblogs.com/yinwuxiao/p/9917846.html