- 2025-01-10P4069 [SDOI2016] 游戏
P4069[SDOI2016]游戏题目描述Alice和Bob在玩一个游戏。游戏在一棵有\(n\)个点的树上进行。最初,每个点上都只有一个数字,那个数字是\(123456789123456789\)。有时,Alice会选择一条从\(s\)到\(t\)的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个点
- 2025-01-10做题记录
CF600E线段树合并典题。P3899可以发现\(a\)固定了所以可以分讨。当\(a\)在\(b\)下面时,可以发现\(b\)能取的个数是\(\min(k,dep_a-1)\)而\(c\)的个数就是\(siz_a-1\)然后乘起来就是总方案数。当\(a\)在\(b\)上面时,可以推出\(dep_b-dep_a\leqk\)并且\(b
- 2025-01-07树链剖分
更新日志2025/01/07:开工。概念树链剖分,将树剖分成多个不相交的链。视情况,我们选择合适的方式进行剖分。我们往往可以借此解决“路径权值修改”问题,或者对启发式合并有所帮助。方式通常的,对于每个节点,我们视自己的需求,每次选择最优的一个子节点,加入其链,而其他子节点分
- 2025-01-06E94 Tarjan边双缩点+树形DP P8867 [NOIP2022] 建造军营
视频链接:E94Tarjan边双缩点+树形DPP8867[NOIP2022]建造军营_哔哩哔哩_bilibili P8867[NOIP2022]建造军营-洛谷|计算机科学教育新生态//Tarjan边双缩点+树形DPO(n)#include<bits/stdc++.h>usingnamespacestd;intread(){intx=0,f=1;charc=getchar
- 2025-01-02【学习笔记】图的连通性相关
1.无向图的连通性见【学习笔记】无向图的连通性。2.圆方树2.1定义&性质圆方树用来解决需要无向图按点双缩点的问题。这里的点双指的是无割点极大连通子图。由割点的性质可得,不同的点双之间,实际上是通过割点来连接的。那么怎么“缩点”?事实上,对于点双来讲,应该叫“缩边
- 2025-01-01高一上一月上旬日记
1.1闲话以为下午\(2:30\)开始进校,遂从家里出发已经比较晚了。到学校后发现是\(2:30\)在机房做好,遂直接拉着行李来机房了。晚上\(miaomiao\)说今明两天把字符串和动态规划专题收收尾。做题纪要CF601EAMuseumRobbery线段树分治。点击查看代码constllmod=1000
- 2024-12-30连通性
图论中的连通性相关的算法(适合学过之后,总结复习的观看)割边,割点,缩点其实都有个共同的名字:tarjan割边对于一个连通的无向图,如果存在一条边,去除后,使其分为两个子图,无法连通,那么这个边可以称为割边例题炸铁路对于一个访问过的点,且不是父节点\(low[u]=min(low[u],dfn[v])\)
- 2024-12-30DP优化——树上依赖性背包&P6326 Shopping
P6326Shopping题意等价于要买一个连通块。首先如果我们能求出一个dp数组:\(f_{i,j}\)表示\(i\)子树内,有\(j\)元,一定要选\(i\),能得到的最大价值。那么\(f_{1,m}\)就是一定选根的答案。然后点分治即可。接下来就是怎么在合理的复杂度内求出dp数组。直接背包显然
- 2024-12-28DP优化——树上依赖性背包&P6326 Shopping
P6326Shopping题意等价于要买一个连通块。首先如果我们能求出一个dp数组:\(f_{i,j}\)表示\(i\)子树内,有\(j\)元,一定要选\(i\),能得到的最大价值。那么\(f_{1,m}\)就是一定选根的答案。然后点分治即可。接下来就是怎么在合理的复杂度内求出dp数组。直接背包显然
- 2024-12-26tarjan 速成
如题,这是一个只适合快速了解的文章,如果要学习tarjan那么请阅读其他文章。用\(Sub(i)\)表示\(i\)的子树,那么\(low_i\)表示\(Sub(i)\)中的节点和\(Sub(i)\)中的节点经过一条非树边可以到大的节点中\(dfn\)的最小值,用\(dfn_i\)表示\(i\)的时间。从随便一个节点开
- 2024-12-25P4782 2—SAT
点击查看代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,m;cin>>n>>m;vector<vector<int>>g(2*n);for(inti=0;i&l
- 2024-12-23连通性相关
基础部分DFS生成树在有向图中,DFS生成树有\(4\)种边:树边:每次搜索找到一个还未访问过的节点时就形成了一条树边。返祖边:搜索时遇到在树上的祖先节点,指向祖先的边。横叉边:搜索时遇到已访问过的节点,但该节点不是当前节点的祖先,就形成了一条横叉边。前向边:搜索时遇到了子
- 2024-12-22模板Tarjan
Tarjan模板因为每次写Tarjan都会写挂,所以整理了一些模板。主要的证明就跳过了,主要区分不同模板的差异。有向图和无向图有向图和无向图的实现有时候会有区别,因为建出DFS树之后,有向图可能有横叉边,但是无向图不会(显然),所以有些细节需要注意。而且无向图判重边会比较麻烦。无向图
- 2024-12-11图论--强连通分量(tarjan)
一.DFS森林和强连通分量(SCC)强连通:u->v,v->u,那么u和v就是强连通的,即u和v互相可达强连通分量:一个集合内的所有点都互相可达二.tarjan算法#include<bits/stdc++.h>#definexfirst#defineysecond#defineendl'\n'#defineintlonglongusingnamespacestd;
- 2024-12-09Contest7519 - 虚树计算
ContestA消耗战(弱化版)题意:只有一组询问的消耗战(B题)。这个题跟虚树没有半点关系。只是为B题做准备。令\(f_u\)为切断\(u\)与其子树内所有关键点的最小代价(不需要考虑\(u\)是关键点的情况)。答案为\(f_1\)。令\(mi_u\)为\(1\rightsquigarrowu\)的最小边权(特别
- 2024-12-09圆方树 笔记
圆方树学习笔记圆方树,就是圆方树。一张图可以转化为一颗圆方树,有一些性质。点双图中任意两不同点之间都有至少两条点不重复的路径。但是这里,我们把不存在割点的图看作点双圆方树中,普通的点是圆点,一个点双是方点。方点向这个点双中包含的所有节点连边看图就会一目了然:圆方
- 2024-12-07重链剖分, 树上路径问题大杀器
重链剖分,树上路径问题大杀器首先,什么是树链剖分数组,要进行修改查询是非常方便的,一眼线段树.但是树并不是.看一下我们目前已有的树上修改查询技术.树上差分只能修改,最后才能查询,不然就只能很慢的单点查询,DFS序+线段树只能进行子树操作,不能进行路径操作.
- 2024-12-06Living-Dream 系列笔记 第87期
点双连通分量定义:若在无向图\(G\)中,存在一个极大子图\(G'\),使得\(G'\)中没有割点,则称\(G'\)为\(G\)的一个点双连通分量,记作\(\texttt{V-DCC}\)。性质:一个点可能在多个\(\texttt{V-DCC}\)中,且这些点一定为割点。求取:我们使用类似强连通分量求取的方法,使用一个
- 2024-12-05P2863 [USACO06JAN] The Cow Prom S
https://www.luogu.com.cn/problem/P2863[USACO06JAN]TheCowPromS题目描述有一个n个点,m条边的有向图,请求出这个图点数大于1的强连通分量个数。输入格式第一行为两个整数n和m。第二行至m+1行,每一行有两个整数a和b,表示有一条从a到b的有向边。输出格式
- 2024-11-28SS241128D. 旅行 (tour)
SS241128D.旅行(tour)题意给你一棵\(n\)个点的以\(1\)为根的树,每个结点有点权\(a_i\)。有\(m\)次操作。操作分\(4\)种。查询\(u\)的点权。令\(u,v\)路径上所有点\(p\)的点权\(a_p\getska_p+b\)。令\(u\)的子树所有点\(p\)的点权\(a_p\getska_p
- 2024-11-28Tarjan详解
Tarjan算法详解本文介绍利用Tarjan算法求无向图割边、割点、点双连通分量和边双连通分量。一些概念介绍图论相关概念,注意有些概念适用于有向图,但是本文均特指无向图。连通图上两个点至少有一条路径连接,则称两个点连通连通图图上任意两个点都是连通的,则称该图为连通图连通
- 2024-11-27tarjan[模板]
强连通分量(有向图)voidtarjan(intx){ dfn[x]=low[x]=++cnt; stac[++top]=x; vis[x]=1; for(inti=hd[x];i;i=nxt[i]) { inty=go[i]; if(!dfn[y])//树边 {tarjan(y);low[x]=min(low[x],low[y]);} elseif(vis[y])low[x]=min(low[x],dfn[y]);//在栈中(判横叉边) }
- 2024-11-26templates
templates前言2024.11.25此文用于整理板子字符串KMPnamespaceKMP{constexprintN=1e6+7;chars[N],t[N];intlens,lent;intnxt[N];//后缀i的border长度voidmain(){sf("%s%s",s+1,t+1);lens=strlen(s+1),lent=strlen
- 2024-11-26边双连通分量+点双连通分量(初步认识)
边双连通分量定义边双连通:若无向图中点x和y在删除任意连边后,仍然连通称x和y是边双连通的。边双连通分量:若无向图G中,存在一个极大子图E,E中没有割边,那么E是G的一个边双连通分量,记为E-DCC。使用场景将无向图转为一棵树如何找边双连通分量先确定割边dfs遍历所有的点,且
- 2024-11-25Tarjan学习笔记
强连通分量,缩点算法:Tarjan代码及模板强连通图:有向图,任意两点有路径强连通分量:有向图,强连通子图数量前置知识:dfs树(dfs序构成的树)成分:1.树边:dfs树上的边(以下三种边是dfs树上没有但原图上有的边)2.前向边:dfs树的祖先到儿子的边。3.返祖边(后向边):儿子到祖先的边4.横向边:旁系亲