随笔分类 - 图论
摘要:题意 给定一棵树,点权为 $0\sim n-1$ 的排列。每次交换两个点的点权或者询问整棵树上所有路径中,路径上点权的 $\operatorname{mex}$ 最大值。 Solution 比较神奇的转化。 考虑放宽题目中的限制,我们在区间 $[l,r]$ 维护树上路径中包含 $[l,r]$ 的数的
阅读全文
摘要:前言 我们的神,MC 曾经曰过,Tarjan 是 $11$ 级算法。 边双 桥: 在一张连通无向图中,如果去掉一条边使得图的极大连通分量增加了,那么这条边就叫做桥。 边双连通分量: 一张无向图中的一个极大连通子图不存在桥,那么这个子图就是边双(e-bcc)。 性质: 一张无向图进行边双缩点之后是一棵
阅读全文
摘要:题意 给定一张有向图,每次询问给出 $s,t$,求从 $s\to t$ 的路径上(可以有重复点)可能会经过多少个点,每次询问会临时加入 $k$ 条边。其中,题目给出的图有如下特点:若 $x$ 能到达 $z$,$y$ 也能到达 $z$,那么必然有 $x$ 能到达 $y$ 或者 $y$ 能到达 $x$。
阅读全文
摘要:题意 给定一张图,边权为 $2^x,x\le 10^5$,求 $s$ 到 $t$ 的最短路以及方案。 Solution 直接上最短路!现在的问题是如何高效存储路径上权值的加和。这题有个特殊之处就是边权都是二的整次幂,我们需要一个有效的方式来实现手动二进制进位并且能够保证时空复杂度。 这题我们利用线段
阅读全文
摘要:题意 给定一张无向图,点有点权。每次可以修改一个点的点权,或者询问从 $a$ 到 $b$ 所有不经过重复点的路径上最小的点权是多少。 Solution 考虑一个点双,点双中任意两个点之间都有两条以上的不同路径,换句话说,对于一个点双,我从任意点出发到任何异于起点的点去,总能取到点双中点权最小的点。这
阅读全文
摘要:题意 你是一个狼人。每次询问给出起点和终点,表示你要从城市 $S$ 走到城市 $E$。不幸的是,你一开始是个人,最后是只狼,并且在作为人的时候,你不能进入编号为 $0\sim L_i-1$ 的城市;同样在作为狼的时候,你不能进入编号为 $R_i+1\sim n-1$ 的城市。如果你可以自由选择在路径
阅读全文
摘要:题意 给定一张有向图,点有点权,边有边长。现在你从 $1$ 号点出发,经过时间 $T$ 之后恰好回到 $1$,期间每次经过每一个点都可以获得它的点权。其中,在不同的 $k$ 次时间某些节点会能获得额外的权值。求这 $T$ 时间能获得的最大权值和。 Solution 首先不考虑额外的权值。考虑到 $n
阅读全文
摘要:题意 给定一张无向图,每次询问为更改一条边的边权后,从 $1$ 到 $n$ 的最短路。 Solution 首先考虑有哪些情况。如果原图中 $1\to n$ 的最短路为路径 $P$,其上第 $i$ 个点为 $P_i$。 删去的边在 $P$ 上,且边权变大; 删去的边在 $P$ 上,且边权变小; 删去的
阅读全文
摘要:题意 给你一个有向树形图,求拓扑序的个数。 Solution 本来想通过拓扑序直接跑 dp,发现假了,然后发现没有利用好这个树形图的性质。 既然是树形图,那我们先不考虑边的方向,当成一棵树。于是我们令 $dp_{i,j}$ 表示以 $i$ 为根的子树中拓扑序中 $i$ 是第 $j$ 个的方案数。然后
阅读全文
摘要:题意 给定一张图,每次只能选择一个与之相连的点中至多有一个点未选择的点,然后选择它。求有序选择 $k$ 个点的方案数,对 $k\in[0,n]$ 求解。 Solution 考虑选择点可以看成是删点,那么每次只有度数小于等于 $1$ 的点可以删掉。这样的话容易想到就是一个环(边双)是删不掉的,于是我们
阅读全文
摘要:Sol 题意转化后变成: \(f(u,G)\) 表示,有多少个 \(v\),满足存在一条路径 \(u\to v\) 上没有比 \(v\) 的编号小的点。然后求倒着加边的过程中的 \(\sum\limits_{i=1}^nf(i,G)\)。 我们首先考虑求 \(f(u,G)\),这个怎么做?我们考虑当
阅读全文
摘要:大意 给你一个矩阵 \(b\),求还原经过一次变换的矩阵 \(a\)。一次变换是把一个点的值变成以它为左上的 \(2\times 2\) 的小矩阵内的元素和。 Sol 好强的差分约束题! 首先考虑随意构造出一组解。然后考虑调整这个解使得满足范围。 构造解非常轻松,你只要把 \(a\) 中最后一行和最
阅读全文
摘要:传送门 题目大意 现在有 \(n\) 个人和 \(m\) 条限制,对于每条限制,包含一个 \(c,t,x,y\)。总时间是 \(T\)。 若 \(c=0\),则表示如果在 \(t\) 时刻第 \(x\) 个人死了,那么在 \(t+1\) 时刻第 \(y\) 个人也死了。 若 \(c=1\),则表示如
阅读全文
摘要:传送门 Solution 题意已经很清楚了。 考虑这样一个三元组的位置,首先是 \(b\) 要选在非 \(0\) 位,\(a,c\) 分别要在它的左右两边。那么有一个很明显的答案上界就是 \(\dfrac{n_0}{2}\),其中 \(n_0\) 表示序列中 \(0\) 的个数。 然后来考虑这个问题
阅读全文
摘要:简介 二分图是一种特殊的图。其定义为: 节点由两个集合组成,且两个集合内部没有边的图。 那啥时候可以用二分图呢?当且仅当图可以进行合法的黑白染色的时候,可以考虑二分图。 二分图匹配 匈牙利算法 最基础的问题就是二分图的最大匹配。所谓最大匹配,就是对于左右两个集合内的点,每个点都只能选一次,并且左右匹
阅读全文
摘要:引入 大家都知道 \(Kruskal\) 求最小生成树吧,这个算法就是建立在前面说的算法的基础上的一个奇妙的想法。 有这么一个问题,给你一张图,每条边都有权值,然后规定一堆东西后问:满足条件的路径中,所经过边权最大值最小是多少。 初步想法 二分,一定是最先想到的,我们接下来就以标题中的那题为例讲讲这
阅读全文
摘要:模板题引入 先来看一道模板题,CF 上的。 这题的意思是给定一棵有 \(n\) 个节点的树,树上有一些关键点(\(key\))。接下来有 \(q\) 组询问,每次给出 \(k_i\) 个 \(key\),要求删去一些点,使得这些 \(key\) 不相连。要求删去的最少的点数。 模板题解析 第一眼看到
阅读全文