首页 > 其他分享 >第一阶段复习

第一阶段复习

时间:2024-05-05 21:13:18浏览次数:24  
标签:dis1 复习 短路 更新 折线 长度 第一阶段 dis

目录

最短路部分

最小环

一些细节:枚举最小环是依据还没有更新经过k的最短路,所以要写在更新经过k的最短路之前。要判断是否存在路径。ijk三指针需要i与k、j与k相连。

传递闭包

f[i][j] |= f[i][k] & f[k][j];

注意是有向图

Dij证明

命题:在取出最短路长度最小的节点u的时候,u的最短路已经被确定,即D(u)=dis(u)
证明:设u是算法中第一个在加入S集合时不满足D(u)=dis(u)的点。(u的存在性略)。一定存在一条路径s→x−y→u,其中y是路径上第一个属于T集合的点。而x和y直接相连,显然x∈S。
因为D(x)=dis(x),所以(x,y)会被松弛,于是加入u的时候,一定有,D(y)=dis(y)
因为边权为正,所以D(y)≤D(u),从而dis(y)≤D(y)≤D(u)≤dis(u)。但因为u被取出,所以dis(u)≤dis(y),故D(u)=dis(u),与假设矛盾。命题得证。

来自OI-Wiki

反图

负环

例题:拉近距离

image

image

最短路计数

方法:因为不涉及权值,所以单纯bfs就好。自环不会影响结果,因为如果经过自环,一定比不经过自环要长,所以输入判自环。重边会影响结果,但是一样计入即可(可不可以用乘法什么的优化)。在遇到一个没访问过的点时,一定是最短路,更新即可,该点的计数+=前驱的计数;若遇到访问过的点,且该点最短路长度大于前驱最短路长度(其实这两个长度必定只差1),则依然更新,其他情况都不是最短路,不更新。这题做完了。

次短路

例题:[USACO06NOV]Roadblocks G

  • 首先想到在最短路算法的过程中计算次短路。进而想到开两个数组,一个是dis1用来存最短路,一个是dis2用来存次短路。
  • 更新最/次短路是最重要的一点。
  • 对于u向v的更新:(定义折线长度为u点最短路加(u,v)边权)
  • 判断1:如果dis1[v]可以更新,则更新dis1[v] 。(这里可以加一句,让dis2[v]等于先前的dis1[v] )
  • 判断2:如果dis1[v]不能更新(这不代表dis2[v]不能更新)。那么如果折线长度小于dis2[v],而且折线长度大于dis1[v](这个dis1[v]并没有被更新,注意这里的逻辑),则更新dis2[v]为折线长度。
  • 判断3:注意到判断2中更新dis2[v]的是最短路的折线长度,这一定比次短路的折线长度更优,所以判断2若不成立,那么才考虑,用次短路的折线长度更新。换个角度理解,这个算法其实是两次松弛,判断2保证了严格小于最短路的次短路。
  • 对于三个判断,有一个成立,就要入队。因为更新势必造成对之后的影响,就要入队。而且从if,else if的角度也很好理解。
  • 这里可以发现,判断123是转折的,可以用else-if连接,比方说,判断2成立,判断3就一定不成立。
  • 好在该题可以一条边重复走。

分层图的几个典例

最短路结合二分

例题:通往奥格瑞玛的道路

边权是扣的血量。点权是要花的路费。

那肯定是最短路和边权有关。

二分最小花费,每次跑一次最短路。

单调性:如果

标签:dis1,复习,短路,更新,折线,长度,第一阶段,dis
From: https://www.cnblogs.com/CYLSY/p/18173880

相关文章

  • pde复习笔记 第一章 波动方程 第六节 能量不等式、波动方程解的唯一性和稳定性
    能量不等式这一部分需要知道的是能量的表达式\[E(t)=\int_{0}^{l}u_{t}^{2}+a^{2}u_{x}^{2}dx\]一般而言题目常见的问法是证明能量是减少的,也就是我们需要证明\[\dfrac{d}{dt}E(t)\le0\]在计算\(\dfrac{d}{dt}E(t)\le0\)的时候一定会用的题目给的方程条件去凑微分,还会......
  • 网络复习题
    HTTP缓存HTTP缓存是一种存储和重用HTTP响应的机制,以减少服务器的延迟和网络负载。HTTP缓存可以存在于多个位置,包括客户端(如浏览器缓存)、代理服务器(如公司或ISP的缓存服务器)以及原始服务器的附近(如反向代理缓存,例如Varnish或CDN节点)。缓存的实现通常遵循以下步骤:缓存存储:当......
  • pde复习笔记 第一章 波动方程 第三节 分离变量法
    教材谷超豪《数学物理方程》第四版,虽然我们老师用的第三版,但是除了页码对不上,习题多了一点,也似乎没有多少区别。打算开个新栏专门总结一下pde的各种计算问题,在图书馆算的手麻了,但是习题几乎都是按套路出牌,所以打算好好总结一下。齐次方程提醒:这里的边界条件是两端固定,也即......
  • c++ 快速复习第一部份
    去年有事无事学过一c++,,由于工作用不上,学来没有用,所以学得乱七八的,最近需要复习一下,因为最近想学习一下硬件相关第一  引用头文件和自定义头#include<iostream>usingnamespacestd;//引用命名空间可以避免使用::语法intmain(){默认输出写法:std::cout<<"Hello,wor......
  • 第一阶段总结
    第一阶段总结循环for语句基本格式for(int变量=1;变量的范围;变量++/--)双重循环双重循环通常运用在枚举题目中例如:这道题是一个典型的枚举类问题,需要将数枚举出来并判断就行了,代码如下:for的拓展死循环for(;;)通常用在循环次数未知的情况下,当满足某个条件时,利用break强制跳出循环f......
  • 第一阶段冲刺个人分工
    第一阶段有些东西目前没办法完成目标是搭好框架我的任务是组织好每天的博客园发表记录和会议总结 以及后续的软件测试加上实现app的个人信息界面  (1)年龄:大概适用范围在老年人以及社区工作服务者等 (2)使用本软件/服务的环境:在办公室里/家里/户外工作时 (3)生活/工作情况:包......
  • Java_web的复习之maven
    Apachemaven是一个项目管理和构建工具,它基于项目对象管理模型的概念,通过一小段描述信息来管理项目的构建2.作用:方便的依赖管理统一的项目结构标准的项目构建流程3.通过maven中的各种各样的插件,我们就可以完成对应的功能例如通过编译插件就可以对项目进行编译,通过测试插件......
  • 复习全书 + 660
    高等数学第一章函数连续极限第一节函数1.函数概念函数定义:一个\(x\)只能对应一个\(y\)基本要素:定义域+对应法则同一函数=两要素相同常见定义域:f(x)定义域值域图像\(\frac1x\)\(x>0\)\(\sqrt[2n]{x}\)\(x\geq0\)\(\log_a{x}\)\(x>0\)......
  • 每天5分钟复习OpenStack(十三)存储缓存技术Bcache
    Ceph作为一个分布式存储,在项目中常见的形态有两者,一种是采用SSD或NVME磁盘做Ceph的日志盘,使用SATA磁盘来做数据盘。这样的好处是比较经济实惠。另一种则是全部采用SSD或NVME磁盘,其性能更好,但是其价格比较昂贵。在第一种形态中,我们能像中间件那样加上一层缓存层,从而实现给数......
  • [哈工大软件工程期末考试] 《软件过程与项目管理》复习笔记
    软件过程与项目管理复习第一章:软件及软件工程软件的概念什么是软件?软件是一组对象或项目所形成的一个“配置”,由程序、文档、数据等部分构成。软件的四大特性复杂性不可见性易变性一致性软件工程的发展软件的发展阶段第一阶段主要用于数值计算的需求完全依......