首页 > 其他分享 >你都复习了吗

你都复习了吗

时间:2024-11-29 09:33:42浏览次数:4  
标签:复习 短路 建图 算法 优化 Kruskal

图论
    最短路
        迪迦哥斯拉
        某死了算法
        Floyd 传递闭包
            矩阵优化
            定长最短路
        同余最短路
    最小生成树
        Prim
        Kruskal
        次小生成树
        Kruskal 重构树
            最大化最小边权
            处理某些删边后询问连通块信息的问题
    二分图
        判断方法
            黑白染色
            并查集
        最大匹配
            匈牙利算法
        最大权完美匹配
            KM 算法                                                <---------------
        性质
            最小点覆盖 = 最大匹配                                   <---------------
            最大独立集 = n - 最大匹配                               <---------------
            DAG 路径覆盖                                           <---------------
                可以相交
                    把 (u, v) 扩展到 (u, n + v),答案为 n - 最大匹配
                不能相交
                    先 Floyd 把可达性传递闭包,转化为上一种情况
    图的连通性
        无向图
            点双
                注意点
                    一个割点可以存在至少两个分量中
                判断是否处在同一个点双连通分量
                    记录弹栈的点,bl[u]==bl[v] || pts[bl[u]]==v || pts[bl[v]]==u
                维护方法
                    圆方树
            边双
                求解细节
                    在 tarjan 最后弹出当前点所在分量,而非割边相同位置
                性质
                    缩点后是一棵树
        有向图
            关键
                instack
            性质
                缩点后是 DAG
    树
        性质
            点减边容斥:连通块个数 = 点数 - 边数
            只有加边的问题:考虑先把最终树的形态确定下来,就能适用我们熟悉的算法
        直径
            性质
                唯一中点
                中点到别的点的最大值最小
            求法
                两边 dfs(边权非负)
                dp
                线段树维护
            处理方法
                把直径拉下来
                以直径一端为根
            性质
                拼接后的直径端点在原先四个中选两个
                最小拼接是连接两个直径中点
        重心
            性质
                重心只能有一个或两个
                若两个,则相邻,断开这条相邻边后,两个子树大小相同
                以重心为根,所有子树大小不超过整棵树大小一半
                连接两棵树,新的重心在原先两个重心的路径上
                到所有点的距离之和最小
            动态维护方法
                均摊分析,每次跳一步
        计数、统计类问题
            在 lca 处考虑合并
        树上差分
            点权
                ++p[u], ++p[v], --p[lca], --p[fa[lca]]
            边权
                边权下放到点权
                ++p[u], ++p[v], p[lca]-=2
        LCA
            求法
                倍增法
                欧拉序(死了)
                DFS 序
                tarjan(半死不活,一次没用过)
        倍增
            小 trick
                对于 u 跳到祖先 v,但是要扣掉 u 的子树
                维护第一步跳的时候处理,这样还是不重不漏的
        树剖
            重链剖分
                性质
                    一个点往上跳不超过 log 条重链
                能够求解
                    子树加、链加、LCA
                解法
                    两遍 DFS,第二次搞 DFS 序,先遍历重儿子
                    同一条重链上 DFS 序连续,可以使用数据结构维护
            长链剖分
                性质
                    一个点往上跳不超过 sqrt 条重链
                解决问题
                    光速求 kth-fa
                    继承重儿子信息,优化 DP
        倍增和重链剖分异同点
            相同点
                可以 O(log n) 往上跳,维护信息
            不同点
                树剖支持修改,适用范围更广
                对于动态加叶子的问题,倍增能更好处理,但是离线预处理建树后树剖也能
        DFS 栈
            使用栈实时维护根到当前点的信息
        DFS 差分
            记录进入子树的信息,递归完子树后再查看,两者作差就得到了子树内的信息
        树上启发式合并
            特点
                问题可以离线,和子树统计有关
                问题一般可以用上很吊的数据结构解决
                时间复杂度:线性对数
            解决办法
                先 redfs 轻儿子,然后删除,redfs 重儿子,加入轻儿子,加入自己,得到自己的答案
        虚树
            题目特点
                m 次询问某些结点,结点数量之和有限制(不然怎么读入啊)
                通常可以根号分治
            建树方法
                单调栈法
                二次排序法
        点分治
            基础点分治
                解决问题
                    树上路径问题
                    所有路径统计问题
                关键函数
                    getroot
                    getsiz
                    solve
            点分树
                问题特点
                    有修改
                解决方法
                    把分治中心向上一层连边,形成一棵树
                    修改、询问跳树的 FA,然后统计答案
                注意点
                    会破坏原树的结构
                trick
                    dfs 序扣除当前分治中心所在连通块,需要扣除 key 的子树
        特殊的树
            基环树
                解题方法
                    分类讨论,做树上 DP,再做环上 DP
                    断开环上的一条边,分类讨论,跑 O(1) 次树形 DP
                    缩点(?)
            最短路径树
                性质
                    祖先到后代的距离是最短路
                    根节点到其他所有点的距离之和最短
                警告
                    没有祖先关系的点对不满足这个性质
    分层图
        问题形式
            分层图最短路
            跑 DAG 上 DP
        trick
            超级源点
    差分约束
        最短路求最大解,最长路求最小解
    DAG 拓扑排序
        注意 du 的预处理,可以先跑一遍拓扑排序预处理出 du
    2-SAT
        特点
            每个点只有两种选择
        trick
            有些题目需要先枚举一些东西,然后剩下的跑 2-SAT
            前后缀优化建图
        max-2-SAT
            NP-hard,想到这应该是建模错了
        解法
            跑 tarjan 缩点
                逆拓扑序,sccno[u] < sccno[u + n] 则选择 u
            暴搜
                求字典序最小解
        拓展
            k-SAT
                建立虚点 u_j 表示 val[u]>=j
                并强制 u_0=true, u_m+1=false
    优化建图
        线段树优化建图
            区间向区间连边问题
    欧拉

标签:复习,短路,建图,算法,优化,Kruskal
From: https://www.cnblogs.com/XuYueming/p/18575799

相关文章

  • 板子复习
    其余1.倍增可以快速求静态区间信息。2.区间操作的数据结构考虑线段树,要思考如何优化信息3.有点思路时先想暴力,然后一点点优化复杂度,相信自己场上除了水题外是有时间也有能力再做出来一道的。4.想好思路时先打爆暴力,可以让思路在脑子里在思考一下,不会写一半乱了,正解错的时候可......
  • 计算机网络复习数据链路层(第三章)
    数据链路层基本情况主要功能:负责相邻节点间数据帧的传输使用通道:(1)点对点通道即一对一通信(2)广播信道即一对多,也称点对多点连路与数据链路的关系:三个基本问题数据链路层协议有许多种,但有三个基本问题则是共同的。分别为:封装成帧、透明传输和差错检测。分装成帧封装成帧就......
  • 软件工程期末复习
    Part1:软件工程基本概念软件=程序+文档+数据在软件工程中,软件通常被定为程序、文档和数据的集合。程序是按事先设计的功能和性能要求编写的指令序列;程序是完成指定功能的一段特定语言代码。文档是描述程序操作和使用的文档,是与程序开发、维护和使用有关的图文材料;数据是程序运......
  • 软件工程——期末复习(适用于sdut)
    名词解释:名词解释--人月答案:人月是软件开发工作量的单位,1人月表示1个程序员1个月的工作时间所开发的代码量。请解释软件缺陷、错误和失败,并简单举例说明。答案:缺陷(defect)指系统代码中存在不正确的地方。错误(error)指系统执行到缺陷代码,就可能是的执行结果不符合预期且无法......
  • noip2024 复习计划
    大致分三步:基本模板、套路复习套题复盘再刷一两道码力题基本模板复习有(参照csp2024套题复盘表):1.数据结构平衡树线段树、树状数组的Trick2.杂算法CDQ分治、整体二分、点分治、点分树KMP(其实不用复习了)3.图论Dijkstra板子,以及最小生成树......
  • 信息安全概论复习-2
    计算机系统的可靠性和可用性系统可靠性定义及测量方法硬件的可靠性和完美性软件的可靠性和完美性容错技术和系统,冗余技术冗余类型,4种,硬件软件时间信息容错系统的工作方式1、自动检查2、自动切换3、自动修复容错系统和部件--系统级容错、部件级容错--就是备用系......
  • 信息安全概论复习-1
    网络攻击事件揭示安全新态势1.勒索软件是各行业面临的最大威胁2.利用漏洞攻击窃取数据的行为增加3.由供应链攻击导致的数据泄露事件增长信息系统定义信息系统结构小结论信息安全的定义信息安全的安全目标CIA三大安全需求其他需求信息安全的主要内容信息系统的......
  • 摄影测量期末复习(某油)
    一、绪论1、LiDar组成部分:激光雷达LiDar:发射激光束探测目标位置,速度等特征量的雷达系统。(1)激光扫描仪(测距仪)(2)POS:GNSS卫星定位系统+IMU惯导测量单元/INS惯导系统(3)数码相机2、POS系统:航空定位定向系统:用卫星定位系统(GNSS)和惯性测量装置(IMU)直接测定航片外方位......
  • Scala的集合复习(Map,Set,Array,List)
     importscala.collection.mutable//queue:队列排队打饭...//特点:先进先出objectzjh{defmain(args:Array[String]):Unit={valq1=mutable.Queue(1)q1.enqueue(2)//入队q1.enqueue(3)//入队q1.enqueue(4)//入队println(q1)......
  • 2024年最新版Java八股文复习
    最新版本Java八股文复习,每天更新一篇,博主正在持续努力更新中~~~一、Java基础篇1、怎么理解面向对象?简单说说封装、继承、多态三大特性?2、多态体现在哪几个方面?3、面向对象的设计原则你知道有哪些吗?4、重载与重写有什么区别?5、深拷贝和浅拷贝的区别?6、实现深拷贝的三种方......