zoukankan      html  css  js  c++  java
  • noip宝藏

    题解:

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

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

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

    最后的搜索大概是这样的

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

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

    比如这题

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

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

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

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

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

    关键在于如何记忆

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

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

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

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

    另外从最优性剪枝来说

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

    就退出

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

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

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

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

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

  • 相关阅读:
    ⑦linux pidstat
    ⑥linux mpstat
    ⑤linux 系统负载
    ④linux 进程优先级
    ③linux 进程管理
    ②linux 监控进程状态
    ①linux 进程概述于生命周期
    ④linux 自动挂载
    ③linux Gdisk
    ②linux fdisk
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/9917846.html
Copyright © 2011-2022 走看看