You are on page 1of 111

树与图

吉如一

杭州天水幼儿园

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 1 / 44
自我介绍

NOIP2013-2015 提高组一等奖

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 2 / 44
自我介绍

NOIP2013-2015 提高组一等奖
NOI2014 银牌

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 2 / 44
自我介绍

NOIP2013-2015 提高组一等奖
NOI2014 银牌
NOI2015 金牌

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 2 / 44
自我介绍

NOIP2013-2015 提高组一等奖
NOI2014 银牌
NOI2015 金牌
目前就读于北京大学信息科学技术学院

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 2 / 44
自我介绍

NOIP2013-2015 提高组一等奖
NOI2014 银牌
NOI2015 金牌
目前就读于北京大学信息科学技术学院
jiruyi910387714@edu.pku.cn

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 2 / 44
基本框架

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA
2) BFS 序与 DFS 序

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA
2) BFS 序与 DFS 序
3) 树链剖分

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA
2) BFS 序与 DFS 序
3) 树链剖分
有时间的话瞎逼讲一点扩展

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA
2) BFS 序与 DFS 序
3) 树链剖分
有时间的话瞎逼讲一点扩展
1) tarjan

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
基本框架


1) 邻接矩阵与邻接表
2) BFS 与 DFS
3) 欧拉回路
4) 拓扑排序
5) 最短路
6) 并查集
7) 最小生成树

1) LCA
2) BFS 序与 DFS 序
3) 树链剖分
有时间的话瞎逼讲一点扩展
1) tarjan
2) 图上的随机游走问题
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 3 / 44
邻接矩阵

A[i][j] = 1 当且仅当存在 i → j 的边。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 4 / 44
邻接矩阵

A[i][j] = 1 当且仅当存在 i → j 的边。


相信你一定对邻接矩阵有了一定的了解,现在让我们把它应用到实
践中去吧!

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 4 / 44
经典问题

一张 n 个点 m 条边的边权为 1 的无向图,对所有 (i, j) 问从 i 到 j


长度为 K 的路径条数。
对一个数取模。
n ≤ 100, K ≤ 1018

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 5 / 44
经典问题


dp[L][i][j] = dp[L − 1][i][k] × A[k][j]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 6 / 44
经典问题


dp[L][i][j] = dp[L − 1][i][k] × A[k][j]
矩阵乘法,dp[L] = AL

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 6 / 44
经典问题


dp[L][i][j] = dp[L − 1][i][k] × A[k][j]
矩阵乘法,dp[L] = AL
快速幂。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 6 / 44
经典问题


dp[L][i][j] = dp[L − 1][i][k] × A[k][j]
矩阵乘法,dp[L] = AL
快速幂。
O(n3 log L)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 6 / 44
欧拉回路

欧拉路径:经过一张图所有边恰好一次的路径。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 7 / 44
欧拉回路

欧拉路径:经过一张图所有边恰好一次的路径。
欧拉回路:起点终点相同的欧拉路径。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 7 / 44
欧拉回路存在的条件

无向图

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数
有向图

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数
有向图
1) 图联通

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数
有向图
1) 图联通
2) 所有点入度等于出度

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数
有向图
1) 图联通
2) 所有点入度等于出度
可以对点数和边数归纳证明。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
欧拉回路存在的条件

无向图
1) 图联通
2) 所有点的度数都是偶数
有向图
1) 图联通
2) 所有点入度等于出度
可以对点数和边数归纳证明。
i → j 的欧拉路径存在当且仅当加上边 j → i 后存在欧拉回路。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 8 / 44
Fleury 算法

搜搜搜!

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 9 / 44
Fleury 算法

搜搜搜!

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 9 / 44
Fleury 算法

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 10 / 44
Fleury 算法

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 11 / 44
Fleury 算法

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 12 / 44
Data Center Drama

你有一张 n 个点 m 条边的联通无向图,现在你需要将每一条边定向,
使得每一个点的入度和出度都是偶数。
初始给定的图不一定有解,你需要给这张图加上数量尽可能少的边,
使得新图有解并输出一个方案。
n ≤ 105 , m ≤ 2 × 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 13 / 44
最短路

Floyd

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 14 / 44
最短路

Floyd
Dijkstra

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 14 / 44
最短路

Floyd
Dijkstra
SPFA

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 14 / 44
经典问题

给出一张 n 个点 m 条边的带正边权的简单无向图,问最小简单环长
度是多少。
n ≤ 300

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 15 / 44
经典问题

min(b[i][k] + b[k][j] + dp[i][j][k − 1])

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 16 / 44
经典问题

min(b[i][k] + b[k][j] + dp[i][j][k − 1])


O(n3 )

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 16 / 44
经典套路

给出一张 n 个点 m 条边的带边权的无向图,你可以选择至多 K 条不
同的边并把它们的边权除以 2 下取整。最小化 1 到 n 最短路。
n, m ≤ 105 , K ≤ 10

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 17 / 44
有环图上的 DP 问题

数轴上的 n 个不同位置上分布了 n 个炸弹,第 i 个炸弹位于 xi ,爆


炸半径为 ri ,引爆了第 i 个炸弹后 [xi − ri , xi + ri ] 中的所有炸弹都会被
引爆。
对于每一个 k ∈ [1, n],问引爆第 i 个炸弹后有多少个炸弹会爆炸。
n ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 18 / 44
有环图上的 DP 问题

Li = min(Lj , xi − ri ), Ri = max(Rj , xi + ri )

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 19 / 44
有环图上的 DP 问题

Li = min(Lj , xi − ri ), Ri = max(Rj , xi + ri )
有环,用最短路更新。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 19 / 44
有环图上的 DP 问题

Li = min(Lj , xi − ri ), Ri = max(Rj , xi + ri )
有环,用最短路更新。
栈连边优化。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 19 / 44
差分约束系统

限制形如 xi − xj ≤ wi 的线性规划问题。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 20 / 44
差分约束系统

限制形如 xi − xj ≤ wi 的线性规划问题。
建图。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 20 / 44
差分约束系统

限制形如 xi − xj ≤ wi 的线性规划问题。
建图。
有负环无解,否则最短路就是一个可行解。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 20 / 44
SCOI2011 糖果

你要准备一些糖发给一些小朋友,每个小朋友都必须拿到糖。同时小
朋友提出了一些要求你必须都满足:

1) i 的糖果比 j 多。
2) i 的糖果不少于 j 。
3) i 的糖果和 j 一样多。

问最少需要多少糖。无解输出-1。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 21 / 44
拓扑排序

如果存在 i → j 那么 i 必须在 j 的前面。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 22 / 44
拓扑排序

如果存在 i → j 那么 i 必须在 j 的前面。


求拓扑序。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 22 / 44
拓扑排序

如果存在 i → j 那么 i 必须在 j 的前面。


求拓扑序。
求字典序最小的拓扑序。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 22 / 44
Poi2014 Rally

给定一张 n 个点 m 条边的有向无环图,你可以删掉其中一个点,最
小化新图的最长链。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 23 / 44
Poi2014 Rally

定义源点 s 和汇点 t,源点向所有点连边,所有点连向汇点。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 24 / 44
Poi2014 Rally

定义源点 s 和汇点 t,源点向所有点连边,所有点连向汇点。


令 fi 为 s 到 i 最长链,gi 为 i 到 t 最长链,边 u → v 的权值定义
为 fu + gv ,那么最长链就是边权最大值。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 24 / 44
Poi2014 Rally

定义源点 s 和汇点 t,源点向所有点连边,所有点连向汇点。


令 fi 为 s 到 i 最长链,gi 为 i 到 t 最长链,边 u → v 的权值定义
为 fu + gv ,那么最长链就是边权最大值。
考虑 s 到 t 的一个割,割边权值的最大值一定也是最长链。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 24 / 44
Poi2014 Rally

定义源点 s 和汇点 t,源点向所有点连边,所有点连向汇点。


令 fi 为 s 到 i 最长链,gi 为 i 到 t 最长链,边 u → v 的权值定义
为 fu + gv ,那么最长链就是边权最大值。
考虑 s 到 t 的一个割,割边权值的最大值一定也是最长链。
假设拓扑序为 x,那么在删掉第 i 个点后,i 之前和之后的点之间
的边一定是一个割,且这些边的权值都没变。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 24 / 44
Poi2014 Rally

定义源点 s 和汇点 t,源点向所有点连边,所有点连向汇点。


令 fi 为 s 到 i 最长链,gi 为 i 到 t 最长链,边 u → v 的权值定义
为 fu + gv ,那么最长链就是边权最大值。
考虑 s 到 t 的一个割,割边权值的最大值一定也是最长链。
假设拓扑序为 x,那么在删掉第 i 个点后,i 之前和之后的点之间
的边一定是一个割,且这些边的权值都没变。
用堆维护,O(n log n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 24 / 44
火车模拟题的弱化版

给定一张有向图,你可以删掉一些边,使得剩下的图中没有环。问方
案数。
n ≤ 12

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 25 / 44
火车模拟题的弱化版

分层 DP。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 26 / 44
火车模拟题的弱化版

分层 DP。
时间复杂度 O(4n )

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 26 / 44
并查集

路径压缩,O(n log n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 27 / 44
并查集

路径压缩,O(n log n)
按秩合并,O(n log n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 27 / 44
食物链

有 3 种生物,第一种吃第二种,第二种会吃第三种,第三种吃第一种。
现在有 n 个生物个体,你依次获得了 m 条信息,每一条信息有 i 吃
j 和 i 与 j 同类两种,你需要判断这条信息是否和之前成立的信息矛盾,
如果不矛盾,这条信息成立。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 28 / 44
食物链

并查集,第 i 种生物标记为 i − 1。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 29 / 44
食物链

并查集,第 i 种生物标记为 i − 1。
对每一个个体记录它与根的标记差。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 29 / 44
食物链

并查集,第 i 种生物标记为 i − 1。
对每一个个体记录它与根的标记差。
O(n log n)。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 29 / 44
数据结构题

给出一个数列,区间开根号,询问区间和。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 30 / 44
数据结构题

每一个数开根号 O(log log n) 次后就会变成 1。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 31 / 44
数据结构题

每一个数开根号 O(log log n) 次后就会变成 1。


用并查集找区间内不为 1 的位置。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 31 / 44
数据结构题

每一个数开根号 O(log log n) 次后就会变成 1。


用并查集找区间内不为 1 的位置。
单点修改询问区间和,树状数组。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 31 / 44
数据结构题

每一个数开根号 O(log log n) 次后就会变成 1。


用并查集找区间内不为 1 的位置。
单点修改询问区间和,树状数组。
O(n log n log log n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 31 / 44
最小生成树

Kruskal

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 32 / 44
最小生成树

Kruskal
Prim

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 32 / 44
最小生成树

Kruskal
Prim
一些耳熟能详的性质

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 32 / 44
DZY Loves Graph

给出一张无向图,初始只有 n 个点。

1) 在 u 与 v 之间插入一条边权为 i(操作编号)的边。
2) 删除当前图中边权最大的 k 条边。
3) 撤销第 i − 1 次操作,保证第 1 次与第 i − 1 次操作不是撤销操作。

n, m ≤ 3 × 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 33 / 44
DZY Loves Graph

只有插入的话并查集就可以了。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44
DZY Loves Graph

只有插入的话并查集就可以了。
如果没有撤销,删除操作相当于撤回前 k 次插入,按秩合并的并查
集即可。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44
DZY Loves Graph

只有插入的话并查集就可以了。
如果没有撤销,删除操作相当于撤回前 k 次插入,按秩合并的并查
集即可。
有了撤销,唯一的影响只有撤销删除操作。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44
DZY Loves Graph

只有插入的话并查集就可以了。
如果没有撤销,删除操作相当于撤回前 k 次插入,按秩合并的并查
集即可。
有了撤销,唯一的影响只有撤销删除操作。
如果删除后是撤销,直接输入撤回前 k 次插入的答案,否则执行撤
销。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44
DZY Loves Graph

只有插入的话并查集就可以了。
如果没有撤销,删除操作相当于撤回前 k 次插入,按秩合并的并查
集即可。
有了撤销,唯一的影响只有撤销删除操作。
如果删除后是撤销,直接输入撤回前 k 次插入的答案,否则执行撤
销。
撤回后的答案可以用一个栈直接记录。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44
DZY Loves Graph

只有插入的话并查集就可以了。
如果没有撤销,删除操作相当于撤回前 k 次插入,按秩合并的并查
集即可。
有了撤销,唯一的影响只有撤销删除操作。
如果删除后是撤销,直接输入撤回前 k 次插入的答案,否则执行撤
销。
撤回后的答案可以用一个栈直接记录。
O(n log n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 34 / 44

两个点的 LCA。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 35 / 44

两个点的 LCA。
路径权值最小值。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 35 / 44

两个点的 LCA。
路径权值最小值。
判断两条链是否相交。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 35 / 44

两个点的 LCA。
路径权值最小值。
判断两条链是否相交。
直径的一些性质。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 35 / 44
经典问题

给出一棵带正边权的树,以及一个节点序列 x。每次给出 [l, r],询问


xi , xj (l ≤ i ≤ j ≤ r) 在树上距离的最大值。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 36 / 44
DFS 序与 BFS 序

DFS 序:每一个节点所在的子树是一个区间

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 37 / 44
DFS 序与 BFS 序

DFS 序:每一个节点所在的子树是一个区间
BFS 序:每一个节点的深度为 d 的所有孩子是一个区间。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 37 / 44
经典问题

一棵 n 个节点的树,每次给第 i 个节点的深度为 d 的子孙加一个值或


询问这些节点的权值和。
n, m ≤ 105

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 38 / 44
一个小套路

给定一棵 n 个点的树,你需要选 k 个节点将他染黑。


一个方案的权值定义为白点两两之间的距离和加黑点两两之间的距离
和。
最大化价值。
n, k ≤ 2000

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 39 / 44
一个中套路

有 n 个城市连成了树的形状,你需要选择一些城市建立你的国家,之
后你会将所有连接你的城市和其他城市的边切断。你的国家必须满足:

1) 1 号城市在你的国家中
2) 国家中每一对城市都可以通过没有被切断的道路相互到达。

切断道路后将所有城市分成了很多个联通块,每一个联通块都发展成
了一个国家。
每个城市都有一个繁荣值 wi ,一个国家的繁荣值为国家内所有城市繁
荣值之和。
你要选择至多 k 个其他国家建交,建交后定义你国家的稳定度为你国
家的繁荣值加上 a× 所有与你建交的国家的繁荣值之和。最大化你的国
家的稳定度。
n ≤ 105 , k ≤ 500
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 40 / 44
一个中套路

http://bestcoder.hdu.edu.cn/solutions.php?page=8

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 41 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。
每个节点到根节点只经过了 O(log n) 条链。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。
每个节点到根节点只经过了 O(log n) 条链。
任意路径只经过了 O(log n) 条链。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。
每个节点到根节点只经过了 O(log n) 条链。
任意路径只经过了 O(log n) 条链。
求出树的 DFS 序(优先遍历重链),那么每一条路径都对应了
O(log n) 个区间。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。
每个节点到根节点只经过了 O(log n) 条链。
任意路径只经过了 O(log n) 条链。
求出树的 DFS 序(优先遍历重链),那么每一条路径都对应了
O(log n) 个区间。
树问题 → 区间问题

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
树链剖分

每个节点连向它最大的孩子,把剩下的边拆掉。
每个节点到根节点只经过了 O(log n) 条链。
任意路径只经过了 O(log n) 条链。
求出树的 DFS 序(优先遍历重链),那么每一条路径都对应了
O(log n) 个区间。
树问题 → 区间问题
线段树 O(log2 n)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 42 / 44
有时间的话瞎逼讲一点扩展

哼唧讲到这儿怎么可能还会有时间呢。
做课件好麻烦的算了就不做了吧。

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 43 / 44
谢谢大家

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
吉如一 (杭州天水幼儿园) 树与图 44 / 44

You might also like