• 考试总结 模拟$101$


    T1 30分钟打完检查了10,就没管了

    所以这一场心态来说算是比较平和的

    T3写完暴力没多想,虽然最后也没有拉开差距

    T2考场上17个A掉了,想到了一个比较向正解的贪心,没过样例之后就没有深入去想

    但是考场上中间的时候很困,虽然昨天晚上睡得很好,但是紧张度不够,一定要尽快提升每天这个时间的状态

    T1「模拟」

    T2「最短路」

    真的十分考察对于最短路的理解

    我考场上yy的假贪心是先跑一个不删边的最短路

    然后对于每个点要删的边,将与它相连的点的(dis+val_i)从小到大排序,

    然后就删去最小的d个

    样例都没过,十分显然的是单点最优解并非全局最优解

    正解:

    遇到最短路,我们不妨先想想$dijkstra$的思路

    它基于一个很重要的贪心,对于非负边权来说,

    当一个点第一次出堆的时候,所有能更新它ans的(即dis小于它的)

    已经处理过了,所以这个点以后就不可能再被更新了

    对于这道题目,我们定义dis[x]表示从x出发到任一出口的最小距离

    首先初始化,出口的dis为0,并且入堆,

    对于一个点来说,它的dis可以被已经更新过的 相连的 点的dis+val_edge更新

    而这样就保证全局最优了,

    所以我们只需要删去能更新这个点的最小的前d个点

    它的dis=第d+1大的点,

    我们再用一个大根堆维护可以更新这个点的值,

    那么只要这个点的待更新值达到了d+1个,我们就可以把它扔到原来的堆中去更新其他点

  • 相关阅读:
    PG
    unzip
    yum
    PG
    SQL
    Grails
    Grails
    Grails
    Chrome
    HTML
  • 原文地址:https://www.cnblogs.com/casun547/p/11799422.html
Copyright © 2020-2023  润新知