图论
文章平均质量分 69
Suryxin.
Suryxin.cn
展开
-
L2-044 大众情人「最短路」
不过这个题数据范围绝对有误,说保证距离感是不超过1e6的正整数,一共才500个点,最大也就499*1e6 = 5e8左右,我上届开成1e9不给过,开再大点才给过,分别输出女性和男性中异性缘最好的人的下标,如果某种性别的异性缘最好的人存在多个,则从小到大输出下标,末行不允许有空格。明明几句话就能说明白的事情,非得写成文言文恶心人是吧。再对于两个性别分别枚举,找到最大值,存下来输出即可。n个人,有向图,有男女性别之分,我们定义异性缘为。对于每个人i,我们枚举j,找到。,数据都不会造,下次别出了。原创 2023-04-17 21:33:04 · 490 阅读 · 1 评论 -
最短路算法详解
Dijkstra && SPFA && Bellman-Ford && Floyed原创 2022-11-11 17:15:33 · 688 阅读 · 0 评论 -
【代码源每日一题Div1】Dis「倍增求LCA维护树链异或和」
【代码源每日一题Div1】Dis「倍增求LCA维护树链异或和」原创 2022-11-10 00:40:10 · 426 阅读 · 0 评论 -
AtCoder Beginner Contest 142 「F - Pure SPFA求固定源点的最小环」
AtCoder Beginner Contest 142 「F - Pure SPFA求固定源点的最小环」原创 2022-11-04 19:24:46 · 391 阅读 · 0 评论 -
「图论」判环、求环、最小环
「图论」判环、求环、最小环原创 2022-11-04 19:03:52 · 896 阅读 · 0 评论 -
二分图的一点点建模例题
二分图原创 2022-11-04 14:24:18 · 371 阅读 · 0 评论 -
启发式搜索 :A*算法详解
启发式搜索:A*算法详解原创 2022-09-16 21:24:25 · 2379 阅读 · 0 评论 -
严格次小生成树
严格次小生成树原创 2022-06-27 20:04:40 · 173 阅读 · 0 评论 -
D. Love Rescue「并查集」
D. Love Rescue题目描述:给两个串s,t你可以选择一些双向转换规则,使得s能变成t问选哪些思路:简单并查集,s[i] 如果不想等t[i],就看看合并过没,如果没合并,则合并,否则不需要。最后输出的时候判断26个字母i的fa[i]是否相等,不想等的话输出就行,相等的话就需要输出#include <bits/stdc++.h>using namespace std;#define endl '\n'#define inf 0x3f3f3f3f#defin原创 2022-05-17 21:53:32 · 173 阅读 · 0 评论 -
Easter Eggs「二分答案 + 二分图(最大独立集)」
Easter Eggs题目描述:有a和红色栖息地,b个蓝色栖息地,你需要埋n个彩蛋,可以选择放在红色栖息地,也可以选择放在蓝色栖息地,输出放彩蛋的不同颜色栖息地的最小距离的最大值思路:求最小距离的最大值,显然是二分答案但是怎么check?两种颜色,可以考虑二分图,但是二分图求什么?最先思考的应该是给每两个距离大于等于mid的点连边,跑二分图匹配,但是这样真的对吗?显然不对,因为你不能保证所有的不同颜色的之间的距离都大于等于mid我们考虑一下最大独立集一个图的最大独立集指的是选出来的尽原创 2022-05-17 20:46:30 · 140 阅读 · 0 评论 -
电路维修「01bfs」
电路维修题目描述:n*m的网格,每个网格上都有一根电线,电线有初始状态,连接左上到右下,或者连接右上到左下,你可以改变若干根电线的状态,使的左上角的格子的左上角能到达右下角的格子的右下角,问最少改变次数思路:可以看成改变状态为1,不改变状态为0,这样就可以用01bfs来求最短路难在到底该怎么跑bfs这里的方法是,n*m的格子上有(n+1)*(m+1)个点,我们bfs的是红色的这(n+1)*(m+1)个点,一个点(2, 2)能跑到四个红色的点,需要开一个dx和dy数组来记录,现在还需要知道是原创 2022-04-26 12:10:37 · 190 阅读 · 0 评论 -
L3-1 直捣黄龙 (30 分)「迪杰斯特拉」
L3-1 直捣黄龙 (30 分)题目描述:n个点,m条边,起点是s,终点是t,你需要从s杀到t点,除了s点外每个点都有一个数量,代表这个点上有的敌军的数量m条边,每条边u v c表示一条权值为c的双向边,连接着u和v你需要求一条最短路的距离,以及最短路的数量,同时因为可能存在多条最短路,我们要在路程最短的基础上选择经过点的数量最多的方案,如果还有多条路径,我们就选择杀敌数量最多的路径,保证只存在一条这样的路径,输出这条路径,以及最短路的数量、最短路的距离、杀敌数量思路:迪杰斯塔拉模拟就行,原创 2022-04-19 22:30:02 · 366 阅读 · 0 评论 -
AtCoder Beginner Contest 209 D - Collision「黑白染色」
D - Collision题目描述:给一颗树,q次询问,每次询问给两个点x和y,两个点上放两个人以相同的速度,沿着二者的最短路前进,问二者会在点上相遇,还是在边上相遇思路:不难发现,对于任意两个点x和y,如果二者在树上的最短距离是奇数,则在边上相遇,否则在点上相遇树上最短距离可以用lca求,但是这里没必要这么求,我们只需要知道二者距离的奇偶性即可,那我们可以对整个图进行黑白染色,如果颜色相同,则是在点上相遇,否则是在边上相遇#include <bits/stdc++.h>u原创 2022-04-19 14:14:28 · 383 阅读 · 0 评论 -
AtCoder Beginner Contest 210 E - Ring MST「Kruskal」「加速合并」「同余与gcd」
AtCoder Beginner Contest 210E - Ring MST题目描述:n个点,m种操作,每种操作都有一个a, c,即你可以选择任意一个点x和(x+a)%n连一条长度为c的边,每种操作都可以进行任意次,顺序也可以任意,问把n个点连成一个连通图的最小权值是多少思路:这个题巨有意思!显然是一个最小生成树的题,但是克鲁斯卡尔的复杂度是O(mlongm),这里的m指的是边的数量,也就是点的数量减1,即n-1,这个题的n<=1e9,显然不能做,所以我们考加速克鲁斯卡尔的合并过原创 2022-04-18 23:16:46 · 747 阅读 · 0 评论 -
L3-022 地铁一日游 (30 分)「floyed + dfs爆搜」
L3-022 地铁一日游 (30 分)题目描述:n个点,m条道路,以及每k公里加一块钱车费,这里的规则是只有距离真正到达k,才会加钱,即40公里花4块钱,39公里花3元你可以在任意一个站点上上下车换道路他为了贪便宜,对于所有车费相同的到达站,森森只会在计费距离最远的站停下来,而且这里的距离是两个点之间的最短距离,也可以在道路的端点停下来给你q次询问,每次询问,都问以x为起点的,能停留的点的集合是什么思路:最短路用floyed求求出最短路后,我们重新建图,对于每个点i,点每个能到达的点j原创 2022-04-15 16:08:39 · 607 阅读 · 0 评论 -
L3-025 那就别担心了 (30 分)「记忆化搜索」
L3-025 那就别担心了 (30 分)题目描述:有向无环图,起点x,终点y,问起点到终点有多少条路径,问是不是从x出发的所有路径都会指向一个无法往下走的点,即y思路:有向无环图,第一反应就是拓扑排序,但是怎么写都过不去,因为无法确定到底是不是"逻辑自洽"正解:记忆化搜索直接爆搜求路径,初始化是给num[y] = 1,然后去dfs(x),相当于倒着推,这样我们只需要判断是否存在某些点来过,且num ==0#include <bits/stdc++.h>using name原创 2022-04-14 18:47:06 · 318 阅读 · 0 评论 -
L3-028 森森旅游 (30 分)「正反建图 + 最短路 + map」
L3-028 森森旅游 (30 分)题目描述:n个城市,你要从1跑到n,每条路都有两种支付方式,一种是现金,一种是旅游币,你现在从1出发,初始有x块现金,可以选择在一个城市的将所有的现金换成旅游币,在这个城市之前,只能用现金支付,在这个城市之后只能用旅游币支付。给出每个城市的汇率,即一块钱可以换多少旅游币q次询问,每次询问,会改变城市x的汇率为c,问现在最少需要在起点准备多少现金可以到达n且每次汇率调整都是在上一次汇率调整的基础上进行的思路:首先正向以现金建图,跑出i到n的最短路dis原创 2022-04-14 15:25:37 · 342 阅读 · 2 评论 -
电力「点双连通数量、无向图缩点」
电力题目描述:给定一个由 n 个点 m 条边构成的无向图,请你求出该图删除一个点之后,连通块最多有多少。思路:对于一个连通图,肯定是删除图内割点才能产生更多的连通分量所以我们可以枚举删除每个割点,找到删除该割点后能产生的最大的连通分量数量maxn,再统计整个图的连通块的数量num,则答案就是maxn + num - 1怎么求删除一个割点能产生的连通分量的数量?我们只需要计算该割点能形成多少个点双连通分量即可特殊的是,如果当前节点不是整个连通图的根节点,那需要给数量+1,因为它和父节点也原创 2022-04-06 13:38:18 · 358 阅读 · 0 评论 -
冗余路径「边双连通分量、无向图缩点」
冗余路径题目描述:为了从 F 个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离的路径,这样她们就有多一些选择。每对草场之间已经有至少一条路径。给出所有 R 条双向路的描述,每条路连接了两个不同的草场,请计算最少的新建道路的数量,路径由若干道路首尾相连而成。两条路径相互分离,是指两条路径没有一条重合的道路。但是,两条分离的路径上可以有一些相同的草场。对于同一对草场之间,可能已经有原创 2022-04-06 13:24:53 · 244 阅读 · 0 评论 -
矿场搭建「点双连通分量、无向图缩点」
矿场搭建题目描述:煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请写一个程序,用来计算至少需要设置几个救援出口,以及不同最少救援出口的设置方案总数思路:对于一个没有割点的一个整个的连通块,至少存在两个出口,才能使的该连通块内的任意一个点都能跑到出口去一个割点会至少连接两个连通分量,所以对于只含一个割原创 2022-04-06 13:14:34 · 315 阅读 · 1 评论 -
银河「建图 + Tarjan缩点 + 拓扑排序 + 最长路」或者 「差分约束跑最长路 + SPFA的SLF优化」
银河「建图 + Tarjan缩点 + 拓扑排序 + 最长路」题目描述:我们用一个正整数来表示恒星的亮度,数值越大则恒星就越亮,恒星的亮度最暗是 1。现在对于 N 颗我们关注的恒星,有 M 对亮度之间的相对关系已经判明。你的任务就是求出这 N 颗恒星的亮度值总和至少有多大。如果 T=1,说明 A 和 B 亮度相等。如果 T=2,说明 A 的亮度小于 B 的亮度。如果 T=3,说明 A 的亮度不小于 B 的亮度。如果 T=4,说明 A 的亮度大于 B 的亮度。如果 T=5,说明 A 的亮度不大原创 2022-04-05 20:47:28 · 246 阅读 · 0 评论