Dfn
  • 2024-10-05dan
    点击查看代码/*GGrun*/#include<bits/stdc++.h>usingnamespacestd;namespaceOctane{//nonterraeplusultradqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqr#defineOCTANE//dqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqr#defineBUFFER_SIZE100000//dq
  • 2024-09-30tarjan
    强连通分量SSC(缩点)有向图缩点(把一个强连通分量看成一个点),用于优化。树枝边:DFS时经过的边,即DFS搜索树上的边反祖边:也叫回边或后向边,与DFS方向相反,从某个结点指向其某个祖先的边横叉边:从某个结点指向搜索树中另一子树中的某结点的边,它主要是在搜索的时候遇到了
  • 2024-09-29杂项乱写 9.29
    因为没有模拟赛,所以考虑捡捡之前漏下的小点。注:LCA之后的讲解中可能会出现一些自由的文字,酌情阅读。dfs序求LCA倍增LCA的常数还是过于大了,虽然好记但会导致我们在一些数据奇异的题中比其它方式求LCA的人的得分要低。所以就有了这个用dfs序求lca的高科技,在时间效率
  • 2024-09-28P3313 [SDOI2014] 旅行
    题目思路为每个宗教维护一个线段数,查询时,树剖时在对应宗教上查询区间即可。使用动态开点线段树,每次最多新建\(\logn\)个节点,不会MLE。代码#include<bits/stdc++.h>#definerange1,100000usingnamespacestd;constintN=100010;structedge{intto,
  • 2024-09-28P3038 [USACO11DEC] Grass Planting G
    题意思路我们可以使用树链剖分,将每条边的边权下放,将其当作点权处理,每次操作都要忽略lca那个点,因为它所对应的点并不在路径上。代码#include<bits/stdc++.h>usingnamespacestd;constintN=100010;structedge{intto,next;}e[N*2];inthead[N],i
  • 2024-09-2720240927
    FunisCounting我们可以发现数组\(a\)必须是\(x\)或\(x-1\),然后分类讨论即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e6+5,mod=998244353;intinv[N],f[N],g[N],t,n,a[N];intC(inta,intb){if(
  • 2024-09-26割点
    割点(ArticulationPoint)在图论中,割点(ArticulationPoint)是指在一个无向图中,如果删除某个节点及其关联的边会导致图的连通分量数量增加,那么这个节点就被称为割点。换句话说,割点是图中的一个节点,删除它会使图变得不连通或减少连通分量的数量。性质连通性:删除割点会使得图的连通
  • 2024-09-26割边和边双联通分量
    割边(Bridge)在图论中,割边(Bridge)是指在一个无向图中,如果删除某条边会导致图的连通分量数量增加,那么这条边就被称为割边。换句话说,割边是连接两个不同连通分量的边。性质连通性:删除割边会使得图的连通性降低,即原本连通的节点变得不连通。无向图:割边的概念主要应用于无向图。桥
  • 2024-09-26强联通分量——Tarjan算法
    Tarjan算法详解参考文章:强连通分量Tarjan算法是一种用于寻找有向图中强联通分量(StronglyConnectedComponents,SCCs)的算法。它是由RobertTarjan在1972年提出的,基于深度优先搜索(DFS)和栈的数据结构。基本概念强联通分量:在一个有向图中,如果一组节点中任意两个节点都可以互相
  • 2024-09-25图论相关
    图论树LCA性质\(LCA(A\cupB)=LCA(LCA(A),LCA(B))\)一堆点集的LCA等于其中dfn最大的和最小的点的LCAdfs序求lca好写且\(O(1)\),吊打欧拉序和倍增。如果两个点\(x\)和\(y\)不存在祖孙关系,那么\(LCA(x,y)=fa(min(dfn_x,dfn_y))\)。我们钦定\(dfn_x<
  • 2024-09-24DFS序求LCA
    DFS序求LCA介绍欧拉序求LCA的数组总是会忘记开两倍,并且预处理的常数较大。用DFS序求LCA可以解决这些问题。欧拉序:进节点和出节点会重复记录节点。DFS序:深度优先搜索的顺序,不会重新记录。假设要求\(lca(u,v)\),且\(dfn[u]<dfn[v]\)。那么\(dfn[u]\simdfn[v]\)的
  • 2024-09-24csp2024赛前集训
    2024-09-24开题顺序:ABDC时间分配:A:20min,B:30min,C:1.5h,D:30min,其余时间打摆。主观难度:绿蓝紫蓝set设\(f_{i,j}\)表示前\(i\)个数和为\(j\)的方案数,然后直接01背包,最后用快速幂把每种和的数量次方乘起来就行了。由于\(f\)最后要当指数,所以要\(mod(kM-1)\)。hire
  • 2024-09-22Tarjan算法及其应用 总结+详细讲解+详细代码注释
    \(\text{Tarjan}\)1.引入概念1.强连通分量1.定义在有向图\(G\)中,强连通分量就是满足以下条件的\(G\)的子图:从任意一点出发,都有到达另一个点的路径。不存在一个或者几个点,使得这个子图加入这些点后,这个子图还满足上一个性质。为什么要限定”在有向图中“而不是”在任
  • 2024-09-1620240916总结
    不积跬步,无以千里。这两天主要是复习了图的连通性相关的题+听了youwike哥哥讲课。先是复习了缩点,割点,割边,点双,边双,2-SAT,感觉比较需要注意的是割点的那个第一个节点的判断,写题的时候总是容易忘。然后又写了几道练习题。缩点#include<iostream>#include<cstring>usingna
  • 2024-09-15Tarjan
    P3388【模板】割点(割顶)1、注意在遍历时要储存根节点编号,判断时需要特判根节点#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intn,m,r;intdn,dfn[N],low[N],cnt,buc[N];vector<int>e[N];voiddfs(intid){ //标记时间戳 dfn[id]=low[id]
  • 2024-09-14图的连通性小记
    前言DFS树无向图DFS树定义:DFS树是在图或树结构上进行深度优先搜索时形成的树。在DFS过程中,从一个顶点开始,尽可能深地搜索图的分支,直到达到一个没有未访问邻居的顶点,然后回溯到上一个顶点继续搜索。从点\(r\)开始搜索,每次进入一个点\(i\)对应的边\((fa_i,i)\)为树
  • 2024-09-13tarjan里的定义
     强连通分量-OIWiki(oi-wiki.org)   从以u为根的子树中的任意点出发。单次到达(从这个点指向某个点,有一条边)的这些点中的dfn的最小值 以v为根的子树,包含在以u为根的子树中,low[v]所用的子节点,一定也可以被low[u],这个点一定在以u为根的子树里,所以用low[v]  从
  • 2024-09-13连通性问题(有向图)(未完结)
    强连通分量我们首先定义两种边:返祖边为从一个点指向其祖先的边;横叉边从某个点指向树中另一个子树中的点的边。两者统称为非树边。而剩下的边即为树边,树边也就是在\(dfs\)树上的边。我们定义\(dfn_i\)为\(i\)是第几个被\(dfs\)到的,\(low_i\)从\(i\)出发走任意条边,但是
  • 2024-09-12图论
    图论连通性什么是连通?任意两点之间有路径使其相互连接。强连通分量若一张有向图的节点两两互相可达,则称这张图是强连通的强连通分量是一个图的一部分是强联通的,则称这是强连通分量怎么求?这里给出一种方法:tarjanTarjan算法基于对图进行深度优先搜索。我们视每个连通
  • 2024-09-11VD1013 DFN小封装芯片 适用于小电流的输出的电池保护芯片
            VD1013内置高精度电压检测电路和延迟电路以及内置MOSFET,是用于单节锂离子/锂聚合物可再充电电池的保护IC。        本IC适合于对1节锂离子/锂聚合物可再充电电池的过充电、过放电和过电流进行保护   。VD1013具备如下特点:高精度电压检测电路
  • 2024-09-10「NOI2021 D1T3 庆典」题解
    uoj675加强:\(\sumk\le6\times10^5\)暴力\(u\)在\(s\Rightarrowt\)路径上\(\iff\)正图上\(s\Rightarrowu\)且反图上\(u\Rightarrowt\)时间复杂度\(O((n+m)q)\)正解只关心可达性,不妨SCC缩点成DAG。注意到一个奇怪的条件:对于三座城市\(x,y,z\),若\(x\Right
  • 2024-09-10一文轻松搞定 tarjan 算法(二)(附带 tarjan 题单)
    完结篇:tarjan求割点、点双连通分量、割边(桥)(附40道很好的tarjan题目)。上一篇(tarjan求强连通分量,缩点,求边双)tarjan求割点还是求强联通分量的大致思路捏.算法思路:我们把图中的点分为两种:每一个联通子图搜索开始的根节点和其他点。判断是不是割点的方式如下:对于根
  • 2024-09-09CF1192B/P6845 Dynamic Diameter
    题意给定一棵带权树和\(q\)次询问,每次询问修改一条树边的权值,并查询修改后树的直径。询问之间不独立。\(n,q\le10^5\),强制在线。分析回想一下,两个点的距离可以被表示成\(dep_x+dep_y-2dep_{lca(x,y)}\)。而树的直径,本质上就是求\(\max_{x,y}dep_x+dep_y-2dep_{lca(x,y)}
  • 2024-09-09tarjan—算法的神(一)cw
    本篇包含tarjan求强连通分量、边双连通分量、割点部分,tarjan求点双连通分量、桥(割边)在下一篇。伟大的RobertTarjan创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的tarjan算法,Splay-Tree,Toptree,tarjan求lca等等。注:有向图的强连通分量、无向
  • 2024-09-09tarjan—算法的神(一)
    本篇包含tarjan求强连通分量、边双连通分量、割点部分,tarjan求点双连通分量、桥(割边)在下一篇。伟大的RobertTarjan创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的tarjan算法,Splay-Tree,Toptree,tarjan求lca等等。注:有向图的强连通分量、无向