图论
文章平均质量分 81
init1064573673
这个作者很懒,什么都没留下…
展开
-
[BJWC2010] 严格次小生成树
题面 严格次小生成树 题解 小蓝书 + 我自己的补充 做法 题意很好理解吧。 设最小生成树的边权之和为 sumsumsum。 我们要找严格次小生成树,就是要找到这样的一条非最小生成树上的边,满足: 将最小生成树上的某条边替换成这条边后,树依然联通。 这条边与被替换边的权值之差最小,且大于 000。 所以我们进行如下操作: 选择一条非最小生成树上的边 (x,y,z)(x,y,z)(x,y,z)。 将它加入树中,显然会形成一个环。 由 KruskalKruskalKruskal 的证明过程我们可以得到,z原创 2021-05-26 21:47:17 · 92 阅读 · 0 评论 -
[NOIP2015 提高组] 运输计划 lca 正确做法
题面 运输计划 题解 因为在写树剖的时候写崩了,所以这里提供一个 lcalcalca 的做法。 虽然有人说 lcalcalca 会被卡,但是我觉得用 tarjantarjantarjan 写出来复杂度也不假。(复杂度分析在下文) 前言 读完题不难发现,其实我们要清空权值的边就是在清空它之后,能把最长的路径降到最小。最大的最小我们想到了什么?自然而然就能稳一波二分答案。所以就可以我们二分在清空后最长的路径的长度。 二分答案的具体步骤 于是现在我们就需要写一个 checkcheckcheck 函数来判断答案是否原创 2021-05-12 21:51:56 · 78 阅读 · 0 评论 -
[HAOI2012] 道路
题面 道路 题解 题意 对于每条道路,求出有多少条最短路经过它。 解析 先看看数据范围,不算大。 所以我们分别以每个点为起点,用 SPFASPFASPFA 求出每个点到源点的最短距离。 不难发现对于边 (u,v,w)(u,v,w)(u,v,w),如果 dis[u]+w==dis[v]dis[u] + w == dis[v]dis[u]+w==dis[v],那么这条边一定在源点到 vvv 的最短路上。 而不满足这个条件的边,显然对答案毫无贡献,所以我们可以在跑完最短路后忽略不满足条件的这些边。 这样原图就变成原创 2021-05-09 21:48:55 · 120 阅读 · 0 评论 -
[JSOI2008] 小店购物
题面 小店购物 题解 这道题建边方式很套路。 定义有向边 (u,v,w)(u,v,w)(u,v,w) 表示买了 uuu 之后,能以边权 www 的价格买 vvv 。 对于原价的物品,建一个超级源点,分别连接每个物品。对于特价的物品,根据以上的定义,连接两个有依赖关系的物品。 最后就会发现,要买完所有的物品,其实就是求这幅有向图的最小树形图。 根据贪心的思想,因为每个物品都要买 (对于不用买的物品,我们可以看做是以 000 的价格买入),而以能以它的最低价格买就以它的最低价格买肯定是最优的 (即 uuu 是要原创 2021-05-07 21:30:58 · 101 阅读 · 0 评论 -
[APIO2010] 巡逻
题面 巡逻 题目大意 在一颗边长为 111 的树上,添加一条或两条长度为 111 的路径,使遍历完整幅图,且经过添加的路径正好一次,并回到起点的路径长度最短,并输出这个长度。 题解 不加的情况 根据深搜的特点,每条路径必定会经过 222 次,即第一次访问和回溯。所以在不加的时候,最短路径一定是 2∗(n−1)2 * (n - 1)2∗(n−1)。 加一条边的情况 因为不加时每条边都要经过两次,加了边之后的好处就是,可以不走原路返回,改为直接返回某一个点,于是要求最短的路径,就是要让节省的路径长度最长。而树中原创 2021-05-04 08:12:01 · 177 阅读 · 0 评论 -
2-SAT 模板题
题面 2-SAT模板题 题目描述 有 nnn 个布尔变量 x1x_1x1 ~ xnx_nxn,满足 mmm 个形如 xi=true/falsex_i=true/falsexi=true/false 或 xj=true/falsex_j=true/falsexj=true/false 的条件 。 输入 第一行两个整数 nnn 和 mmm,意义如题面所述。接下来的 mmm 行,每行四个整数,x,a,y,bx,a,y,bx,a,y,b (KaTeX parse error: Expected '\righ原创 2021-05-02 22:02:46 · 91 阅读 · 0 评论 -
P3530 [POI2012]FES-Festival
题面 P3530 [POI2012]FES-Festival 题意 在满足给定的条件下,求出赛车手的成绩可能的取值有多少种。 解析 差分约束 不等式关系自然联想到差分约束。 对于第一种不等式 因为给定了相差的值,所以建双向边: dis[i]≤dis[j]−1dis[i] \leq dis[j] - 1dis[i]≤dis[j]−1dis[j]≤dis[i]+1dis[j] \leq dis[i] + 1dis[j]≤dis[i]+1 通过两个不等式,锁定 i,ji,ji,j 之间的差值为 111。 对于第原创 2021-04-29 21:47:23 · 106 阅读 · 0 评论 -
HAOI 2010 软件安装
题面 软件安装 题意 一个裸的树形背包问题 解析 缩点 从某个物品依赖的物品向这个物品连边,得到一个有向图。 这时我们会发现,在一个强连通分量里,如果想要有价值的话,必须全部选,根据贪心的思想,对于一个强联通分量,要么全部选,要么全部不选,所以我们可以把这幅有向图进行缩点。 因为每个物品只有一个依赖关系,所以每个强连通分量最多只会有一个父节点,也就是说,缩点后我们得到了森林。 为了方便进行树形背包,我们可以建一个根节点 000 号节点,把森林转化为一棵树。 背包 状态 树形背包的老套路: dp[i][j]d原创 2021-04-29 19:36:06 · 108 阅读 · 0 评论 -
[POI2008]BLO-Blockade
题面 [POI2008]BLO-Blockade 题解 深度优先遍历这幅图。 设 siz[x]siz[x]siz[x] 表示在搜索树中,以 xxx 为根的子树的大小。 注意不连通的关系是双向的,所以(x,y),(y,x)(x,y),(y,x)(x,y),(y,x)算两次。 对于当前点 xxx,有两种情况: xxx 是割点 那么删去 xxx 之后会有如下的点不连通: xxx 在搜索树上的子树中所有的节点与其它的点: ∑k=1tsiz[k]∗(n−siz[k])(t为子节点总数)\sum_{k = 1}^{原创 2021-04-22 21:46:23 · 98 阅读 · 0 评论 -
UVA515 King(差分约束)
这是一篇良心的题解 这道题不打开标签还是能看出是差分约束的,但是和板子的差分约束有点不同,它的不等式中未知项不止两个,但是,这些未知项都是连续的,自然我们不难想到用前缀和的形式来表示。 关于翻译错误 仔细看一下原文的题面是能够看出来的,应该是: ax+ax+1+…+ax+ya_x + a_{x + 1} + … + a_{x + y}ax+ax+1+…+ax+y 最长路判正环的SPFA 以 gtgtgt 为例: 所以我们可以把它转化为: sumx+y−sumx−1>csum_{x + y} -原创 2021-04-22 14:52:10 · 74 阅读 · 0 评论