zoukankan      html  css  js  c++  java
  • 总结反思

    图论

    树剖: 速度较快, 能够维护动态信息

    倍增: 实现方便,速度较快,易维护静态信息

    (Tarjan)(LCA): 离线算法, 时间复杂度 (O(n + q))

    最小生成树的 (Boruvka) 算法, 因为最多需要用 (log V) 次即可联通, 拓展比较多, 时间复杂度优秀 (O(E log V))

    次小生成树: 每次替换一条在最小生成树中的最大边, 并使原图联通, 可用倍增维护

    严格次小生成树: 考虑维护最大边的同时维护严格次大边, 每次替换时, 若用来替换的边的权值和最大边权值相同则替换严格次大边

    (Kruskal) 重构树: 在(Kruskal)的过程中建立, 可用来查找最小瓶颈路

    斯坦纳树: 本质是 子集DP , 连通若干个关键点的最小边权和

    同余最短路: 类似于 P3403 跳楼机 的转换方式可用矩阵快速幂或最短路实现

    子集dp:

    (O(3 ^ n))

    for (int i = 1; i < (1 << n); i++) {
        for (int j = i; j; j = (j - 1) & i) {
            /*
                j为i的子集
            */
        }
    }
    

    (O(n imes 2 ^ n))

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < (1 << n); j++) {
            if (j & (1 << i)) {
            /*
                j ^ (1 << i) 为 j 的子集
            */
            }
        }
    }
    

    (checkmark)

  • 相关阅读:
    值传递
    抽象类
    面向对象三大特征(二)--继承
    单例设计模式
    神奇的main方法详解
    面向对象的三大特征 ---- 封装
    变量、方法以及静态和非静态
    面向对象编程-类和对象
    数组
    力扣题库刷题(随时记录)
  • 原文地址:https://www.cnblogs.com/eqvpkbz/p/13832817.html
Copyright © 2011-2022 走看看