图论
文章平均质量分 54
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
-
Legacy 【CodeForces - 786B】【线段树优化建图】
题目链接CF-786B题意:有N个点,Q次操作,图的起点是S,问经过Q次操作之后,S到每个点的最短路。增加从点v到点u的距离w的边 增加从点v到点[l, r]区间的每个点的距离w的边 增加从区间[l, r]到点v的距离为w的边 于是,我们可以开两棵线段树,分别表示出入的情况,然后操作结束之后跑一次堆优化的Dijkstra即可。#include <iostream>#include <cstdio>#include <cmath>#include.原创 2020-07-28 10:37:06 · 233 阅读 · 0 评论 -
Directing Edges【Codeforces 1385E】【拓扑排序】
题目链接 题意:N个点,M条边,其中“1”边是有向边,“0”边是无向边,我们要给无向边定向,使得这个图不会构成环。 构成环会让我们想到关于拓扑排序,因为如果成环了,就会使得有点不能出拓扑了,所以当我们跑拓扑序的时候,我们可以给无向边的指向定为从拓扑小的指向拓扑序大的。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cst..原创 2020-07-19 09:10:20 · 229 阅读 · 0 评论 -
Heat Pipes【2020 年 “游族杯” H题】【图的直径】
题目链接 题意:给出一个N个点的图,不保证图的联通(会wa2的),然后有M条无向边,可以给每个点进行上色,要求的是每两个相邻的点的点权差值为1,并且给出上色的权值范围为,要求每一种颜色都要用上。 所以解决的办法就比较的显而易见了,肯定要找到图的直径,从直径的一端点开始,给每幅图的直径染色,然后再利用bfs分层图的方法来进行判断颜色的合法性,如果遇到一个已经染色的点,并且这个点的到起点的距离相邻的点到起点的距离是相等的,那么很显然的,这样的时候是矛盾的,简单的说,奇数环一旦存在就是矛盾的。 ...原创 2020-06-02 12:22:40 · 258 阅读 · 0 评论 -
Even Degree【2020 年 “游族杯”E题】【欧拉回路】
题目链接 题意:有N个点,M条边,每次可以删去一条两端点的度不都是奇数的边,问最多可以删除几条边?题目保证初始所有点度为偶数。 首先,题目保证了初始的时候所有的点的度都是为偶数的,于是原图中的每一个联通块一定是一个欧拉回路,对于欧拉回路,最好的情况下,一定是最后剩下一条边,链接着两个度为1的点,并且一定是可以如此满足的。 于是,对于每个有mm条边的联通块,一定会有mm-1条边是可以删去的,但是具体怎么删去呢?我们不能直接按着欧拉回路的跑法直接删去,会有这样的bug:具体:如果我们先...原创 2020-05-29 22:06:53 · 651 阅读 · 0 评论 -
图的遍历【奇数环存在性】
题目链接 其实就是让我们找奇数环和联通块,如果存在一个奇数环的话,那么只需要把联通块连起来就可以了,如果不存在奇数环,除了把联通块连起来,还需要再多一条边来增添一个奇数环。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <.原创 2020-05-22 14:04:32 · 859 阅读 · 0 评论 -
[加油武汉]疫情调查【最小费用可行流】
题目链接 P6061 [加油武汉]疫情调查 这道题一上来,就让我看到了最小费用可行流的影子,每个点至少经过一次,且不限经过次数,那么不就是最小费用可行流了嘛。 于是,我们就开始建图,对于每个点拆点,然后设置下限为1,上限INF,记得一件事,要开long long,INF也要设置的足够的大,不然会WA。对于自己的自环,那么就可以是。 对于M条边也就是,这里是因为拆点了。 然后...原创 2020-05-01 23:05:38 · 212 阅读 · 0 评论 -
Fantastic Graph【2018沈阳网络赛】【有上下限网络流】
题目链接 给出一幅二分图,有左侧N个点,右侧M个点,问能否选用其中给出的K条边使得每个点的度都为区间[L, R]上的值,边都是无向边。 很明显,限制了上下限,于是想到了往有上下界可行流上去考虑,将原图考虑成有源汇点,让原图源点到左侧的所有点的经过次数都要是[L, R]之间,让右侧的所有点到原图汇点的经过次数都要是在[L, R]之间,那么每一条边的上下限也就确定了。 然后,依据有上...原创 2020-04-30 09:45:48 · 253 阅读 · 0 评论 -
Intervals【POJ - 3680】【费用流】
题目链接 给出N个开区间,每个开区间都有一个权值,现在对于实轴上的所有的点,要满足每一个点被覆盖次数不超过K次,问最大可以获得的权值是多大? 离散化+费用流 首先,我们看到权值的区间实际上并没有1e5那么长,我们可以对其进行离散化一下,于是区间的最长也就是2N了,也就是从1e5到了4e2。 然后,对于,我们先看只能被经过最多K次,可以看成一个从每条边都最多经过K次,那么不妨...原创 2020-04-17 09:04:12 · 143 阅读 · 0 评论 -
最长道路tree【边分治】
题目链接 BZOJ 2870给定一棵N个点的树,求树上一条链使得链的长度乘链上所有点中的最小权值所得的积最大。其中链长度定义为链上点的个数。 边分治与点分治类似,都是树分治的一种,与点分治不同的是,边分治找的是分治中心边,而点分治找的是分治重心点。 分治操作是解决了复杂度现在,我们要以我们的分治中心边为基础向两边延伸,所以,至少向两边各自延伸一个点。 但是这样做的复杂度显...原创 2020-04-10 13:52:17 · 264 阅读 · 0 评论 -
拯救小tim【最短路】
题目链接 这里有一个坑点,譬如说,我们从S出发的时间,不是刚好卡着第一个的“起始点”,没准出发的第一步,没有卡起始点,而是在后面的到达其他点的时候卡了起始点这样的情况,所以我们应该从0~max_BegTim的来枚举起点时间,然后跑Dijkstra即可。#include <iostream>#include <cstdio>#include <cmath...原创 2020-04-08 14:16:20 · 145 阅读 · 0 评论 -
[Wc2007]剪刀石头布【竞赛图最大三元环个数+费用流】
题目链接 BZOJ 2597 给定一个存在不确定边的竞赛图,求原图有向三元环数的最大值。有些边是不确定方向的,我们需要给这些边定向来使得三元环的数目最多,总所周知,由三个点的竞赛图组成的三元环,每个点的入度都应该为1,这样才可以组成一个三元环,如果有N个点的竞赛图,那么最多最多就是个三元环。那么,我们不妨减去最少的不可行三元环数,来确定最大可能三元环数。怎样的三元环是...原创 2020-04-05 22:58:57 · 333 阅读 · 0 评论 -
有向三元环 count【竞赛图三元环最大数+最小费用最大流】
题目链接 UMS Online Judge IPC14 成功的get到了全网的一血,开心~ 题意:给定一个竞赛图的子图,求原图有向三元环数的最大值。 有些边是不确定方向的,我们需要给这些边定向来使得三元环的数目最多,总所周知,由三个点的竞赛图组成的三元环,每个点的入度都应该为1,这样才可以组成一个三元环,如果有N个点的竞赛图,那么最多最多就是个三元环。 那么,我们不妨减去最...原创 2020-04-05 15:05:38 · 1632 阅读 · 1 评论 -
拉普兰德的愿望【曼哈顿距离转切比雪夫距离】
题目链接在上一篇文章中,我们知道了切比雪夫距离 现在,我们来认识一下,曼哈顿距离转换成切比雪夫距离有什么好处?——更加简单的处理“曼哈顿距离大于等于D的点对数目”。我们现在的曼哈顿距离假设为,那么,我们假设有这样的切比雪夫距离连立两个不等式,得到,。好了,我们将原来的问题转化为了求切比雪夫距离大于等于D的点对数,这样问题就简单了,我们可以利用单调队列+树状数组等数组结构来维...原创 2020-04-03 13:48:09 · 230 阅读 · 0 评论 -
[TJOI2013]松鼠聚会【切比雪夫距离转换曼哈顿距离】
题目链接 首先,愚人节那天,暴力斩获30分,(暴力法真好用! 然后,讲一下解题的思路吧,主要是怎样转换切比雪夫距离这里要有神奇的方法。首先,我们先列举一下两点间切比雪夫距离的求解公式:指的是i、j两点的切比雪夫距离于是,我们再用一些数学上的思维来拆解这个等式关系这样的做法,是为了我们去掉最大值max()符号之后,我们发现,似乎变成了新的坐标,我们移项来看...原创 2020-04-03 10:41:44 · 898 阅读 · 0 评论 -
调查任务【51nod 1815】【Tarjan+拓扑DP】
题目链接这道题细节上的处理是真的比较容易的忽略了。就譬如说,题目中说到的,从S到点x的一条路径上的两个点,这句话很关键。我们都很容易的想到应该取次大值,但是次大值首先是根据最大值决定的,那么也就代表了最大值必须也是这条路径上的,次大值也是这条路径上的,不能取一条边的最大值,再取另一条其他边的最大值,组成最大值和次大值这样的组合是不行的。那么,你继承最大值的时候,我们有时候会忽略一些...原创 2020-04-02 15:33:55 · 228 阅读 · 0 评论 -
Caocao's Bridges 【HDU - 4738】【Tarjan求桥(割边)】
题目链接 在赤壁之战中,曹操被诸葛亮和周瑜击败。但他不会放弃。曹操的军队仍然不善于水战,所以他提出了另一个想法。他在长江建造了许多岛屿,在这些岛屿的基础上,曹操的军队很容易攻击周瑜的部队。曹操还建造了连接岛屿的桥梁。如果所有岛屿都通过桥梁相连,那么曹操的军队可以在这些岛屿中非常方便地部署。周瑜无法忍受,所以他想要摧毁一些曹操的桥梁,这样一个或多个岛屿就会与其他岛屿分开。但周瑜只有一枚由诸葛...原创 2020-04-01 19:36:02 · 288 阅读 · 0 评论 -
抓住czx【最短路】
题目链接 首先,做这样的处理,把每个点的时间分割为几个区间,说明在这个区间内的时候,人在这个点内,那么,我们就有这样的选择,如果在这个区间内,或者区间之前抵达,就说明是可以碰见的,如果在这个区间之后抵达,就说明是见不到的了,所以跑最短路,如果在最短路时间抵达这个点的时候,能找到答案的话,更新答案,并记录即可。#include <iostream>#include <...原创 2020-03-30 10:52:23 · 217 阅读 · 0 评论 -
[USACO12FEB]Nearby Cows G【换根DP】
题目链接给你一棵n个点的树,点带权,对于每个节点求出距离它不超过k的所有节点权值和mi。 求一个点的点权值很容易,以它为根,然后直接向下dfs,所有深度小于等于K的都是可以作为答案的,所以,处理子树上深度小于等于K的点权之和是有必要的,我们开个dp[maxN][maxK]来记录,每个点,向下kk步能积累的所有的点权之和。 然后,再丢出一个问题,如果我们知道一个点的答案,...原创 2020-03-29 22:43:59 · 279 阅读 · 0 评论 -
[TJOI2007]脱险【最大流】
题目链接 首先,每个时刻,每个点最多经过一个人,那么来说,我们需要对于每个时刻的每个点进行拆点,限制流量。 然后,因为图实际上只有10*10,因为最外围是包围圈,然后时间上其实是上限50,所以我们不妨对于时间来建点,表示时间为Tim时候的坐标为(x,y)的点,那么,根据每一秒移动一步,初始为0,我们向四个方向都是链接上下一秒时刻对应的点值。 接下去,就是最大流的部分了。#i...原创 2020-03-29 10:52:03 · 298 阅读 · 0 评论 -
Birdwatching 【Gym - 102501K】
题目链接 抗疫期间,在家读如此长的题目容易烦躁hh,于是我就帮大伙读了。 有N个点,M条边的无向图,我们给出图P是图G的一个衍生图,图G中的点和边图P中都有,但是图P中可能存在一些多余边,怎么说呢,就是图G中有a->b->c这样的边,那么图P中可能就会新的生成a->c这样的边了,类推有效。 现在,我们要找一个点T,要确定这样的点T',使得T'确保在图G中有T‘-...原创 2020-03-28 15:48:36 · 1005 阅读 · 0 评论 -
D-isaster【Kruskal重构树+dfs序】
题目链接 [Contest #11]D-isaster你需要支持对一张n个点m条边点带权的无向连通图进行以下两种操作: 修改点x的点权。 询问从点x出发只经过编号不大于y的点能到达的所有点的点权之积取模998244353。 于是乎,这题明摆了,编号不大于y的话,然后对于整个子树进行全体乘积,岂不就是Kruskal重构树然后再来一个dfs序维...原创 2020-03-27 10:45:43 · 147 阅读 · 0 评论 -
[POI2013]MOR-Tales of seafaring【最短路+坑点】
题目链接 P3556 很不纯洁的一道最短路。给n个点m条边无向图,每次询问两个点之间是否有长度为d的路径(不一定是简单路径)。 表面波澜不惊实则暗潮涌动。首先,给出的边保证u、v不相等。但是并不保证查询时候的u、v不能是u和u,也就是查询的点可能是相等的。那么,如果查询时候的点是相等的,同时又有这是一个独立的点,那么此时,它永远是0,不可能有所增长,这里需要特别注意。(85分是...原创 2020-03-26 23:02:21 · 229 阅读 · 0 评论 -
[POI2008]CLO-Toll
题目链接 本题有个小点需要注意,如果说它是多个相互不连通的图,也有可能形成一个可行解,多个环嘛。 然后剩下的,就是dfs去跑,如果跑出了返祖边,那么这个返祖边抵达的点,将改变原来的方向,剩下的就都是正方向,dfs直接跑就是了。#include <iostream>#include <cstdio>#include <cmath>#incl...原创 2020-03-26 20:14:34 · 161 阅读 · 0 评论 -
战略游戏【HYSBZ - 5329】【广义圆方树+虚树】
题目链接 只要在摧毁这个城市之后能够找到某两个小C占领的城市u和v,使得从u出发沿着道路无论如何都不能走到v,那么小Q就能赢下这一局游戏。 所以,我们只需要知道有多少个点是可以作为割点的,那么求割点,并且总的点集还很少,所以就用广义圆方树加上虚树来完成了。 广义圆方树主要就是求点双连通分量,其中,所有的圆点就是可以作为割点的,所以,统计生成虚树上有多少个可以作为割点的点,然后...原创 2020-03-21 20:36:40 · 211 阅读 · 0 评论 -
Knights of the Round Table【点双连通分量与二分图】
题目链接 POJ - 2942 题意:亚瑟王要给骑士们开会啦,有N个骑士,其中有M对骑士相互之间会吵架,亚瑟王不允许相互吵架的骑士坐在一起,但是他们可以一同坐在餐桌上,只要隔开就可以了。还有就是,出席会议的骑士数必须是奇数,这是为了让投票表决议题时都能有结果。如果出现有某些骑士无法出席所有会议(例如这个骑士憎恨所有的其他骑士),则亚瑟王为了世界和平会强制把他剔除出骑士团。问亚瑟王至少要剔除...原创 2020-03-20 22:12:29 · 296 阅读 · 0 评论 -
Financial Crisis【点双连通分量】
题目链接 HDU - 3749 你以为学了Tarjan会写几个边双就真的理解什么是双连通分量了吗?——我原来真的不懂什么叫做点双BCC。 不过这都没有关系,解决了这个问题之后,我终于知道了什么叫做点双连通分量了。 这是一个绝对绝对经典的问题,首先讲一下题意: 给你一幅N个点,M条边的图(不一定连通),再给出Q个询问,每次的询问是u、v两点,从u到v是否有两条及以上“无重叠路...原创 2020-03-20 09:56:32 · 200 阅读 · 0 评论 -
cactus仙人掌图【仙人掌圆方树+树形DP+单调队列】
题目链接 BZOJ 1023 首先,圆方树是比较好想到的,维护直径,我们最方便的做法就是先让它变成一棵树,这里因为是仙人掌图,所以就用圆方树来构建。 再者,就是维护直径了,比较好想到的是非环上结点,就是简单的树形dp就可以维护了。 如果这个点是环上的一个点那又如何是好?那么,环上的两点所构成的最长直径为dp[u] + dp[v] + dis(u, v),"dp[x]"表示x点到它...原创 2020-03-18 13:44:27 · 474 阅读 · 0 评论 -
[SCOI2005]骑士精神【迭代加深+IDA*】
题目链接 P2324 [SCOI2005]骑士精神首先,我们先讲讲几个基础知识:迭代加深 我们假设深度优先搜索(DFS)的最深搜索到Max_depth,那么也就是说深度到达Max_depth的时候不管满不满足答案都要返回了true or false。IDA*启发式搜索优化DFS 作为A*算法,也就是有估值函数这样的定义了,原来的深度小于等于Max_depth也将剪枝成为当前...原创 2020-03-15 19:18:21 · 246 阅读 · 0 评论 -
[USACO06FEB]Steady Cow Assignment G【二分+最大流】
题目链接 P2857 [USACO06FEB]Steady Cow Assignment G有N头牛,B个牛棚.告诉你每头牛心里牛棚的座次,即哪个牛棚他最喜欢,哪个第2喜欢, 哪个第3喜欢,等等.但牛棚容量一定,所以每头牛分配到的牛棚在该牛心中的座次有高有低.现 在求一种最公平的方法分配牛到牛棚,使所有牛中,所居牛棚的座次最高与最低的跨度最小.数据范围:(1 <= N <=...原创 2020-03-14 20:56:13 · 191 阅读 · 0 评论 -
[ZJOI2009]狼和羊的故事【最小割】
题目链接 P2598 [ZJOI2009]狼和羊的故事 要让羊和狼都区别开来,需要的最小的割是多少?每只羊向四周有4个可能的方向,每只狼也是同样的,所以每个动物向周围可以跑出4个流,我们要建立栅栏,可以考虑成切断的“割”,那么最少需要多少的割才能使得羊狼无法接触呢?于是我们对羊连接在源点上,狼连接在汇点上,羊抵达不了狼,那么就是说明是其中的一种割的方案了,最小的割就是最大流了。#inc...原创 2020-03-14 10:16:44 · 247 阅读 · 0 评论 -
Fantasia 【HDU - 5739】【广义圆方树】
题目链接 这道题的题意在这里就不展开了,因为这次的英文比较的好读,也没有生词,好懂一些些hh。 然后,这道题的关键点,肯定就是来看这个点是不是一个割点,也就是割去这个点之后就将原来的联通块展开成两个以上联通块,把原来的联通性给断开了,于是,基于这个,我想到的解法就是广义圆方树了。 很明显的,广义圆方树会形成新的方点,我们给新的方点赋值为1,肯定就不会影响到答案了,于是真正影响答案...原创 2020-03-13 22:00:25 · 220 阅读 · 0 评论 -
Harmonious Army 【HDU - 6598】【最小割】
题目链接 很经典的一道问题,应该是二刷了,但是刷第二遍的时候还是有很深刻的体会。 题意:有N个人,每个人都有自己所可选的阵营,战士或者是法师,现在给出M个关系对,如果关系对中的两个人都是战士会得到贡献a,如果一战士一法师会得到贡献b,如果两个法师会得到贡献c,现在求最大贡献。 好了,我们来思考这个问题,有N个人,他们每个人该选择战士还是法师呢?肯定是由他的贡献来确定的,如果现在有...原创 2020-03-13 14:39:06 · 198 阅读 · 0 评论 -
[NOI2010]海拔【对偶图优化网络流】
题目链接 P2046 [NOI2010]海拔 如果按照原图的方法直接跑最大流来求最小割,那么500*500个点的跑网络流,必然是TLE的,所以这里引入对偶图优化。 首先,我们要知道一些前置知识。平面图 指点和边之间有一种连法,使得边与边之间没有交点。如图就是一个合理的平面图这就不是一个合理的平面图,因为有两条线有一个交点。 于是,在满足平面图的情况下,我...原创 2020-03-11 14:46:11 · 218 阅读 · 0 评论 -
[SCOI2009]最长距离【最短路】
题目链接 P4162 [SCOI2009]最长距离 注意,‘0’号格子是可以走的,‘1’是用来隔断的。 然后,要确定最长距离,我们可以考虑成一个点到另一个点的最少需要搬掉几个障碍物才可以,那么问题可以转变成最短路问题,然后在一个个的去查询即可。 时间复杂度#include <iostream>#include <cstdio>#include &...原创 2020-03-10 22:31:35 · 266 阅读 · 0 评论 -
Binary Tree on Plane【费用流】
题目链接 CF 277 E题意翻译给你平面上n个点 (2≤n≤400),要求用这些点组成一个二叉树(每个节点的儿子节点不超过两个),定义每条边的权值为两个点之间的欧几里得距离。求一个权值和最小的二叉树,并输出这个权值。其中,点i可以成为点j的的父亲的条件是:点i的y坐标比j的y坐标大。如果不存在满足条件的二叉树,输出−1。 我们知道二叉树所满足...原创 2020-03-10 19:54:36 · 156 阅读 · 0 评论 -
[SDOI2010]星际竞速【有上下界最小费用可行流】
题目链接 P2469 [SDOI2010]星际竞速 这道题的上下界在于两个,其中一个显而易见,但是另一个却比较的隐藏了。每个点都要求被经过一次且恰好一次 你需要至少通过瞬移这个技能一次,因为需要跳到其中的一个星球上去 于是,就可以根据这两个上下界来进行有上下界最小费用可行流了。#include <iostream>#include <cstdio>...原创 2020-03-10 10:52:47 · 186 阅读 · 0 评论 -
[ZJOI2009]假期的宿舍【二分图最大匹配】
题目链接 P2055 [ZJOI2009]假期的宿舍 关于这道题的做法,我所使用的算法可能会复杂了,实际上我们要先理清楚题意(尽管它是道中文题)。 首先,认识关系是没有传递性的,譬如A认识B,B认识C,C认识D,C和D要回家了,A和B是外校的,不代表B能先睡C的给A暖暖炕头再搬去C认识的D的床位,然后A睡B之前睡的C的床位。 若A认识B,那么只能A去睡B的床,不是说B认识X,A就...原创 2020-03-09 22:48:09 · 126 阅读 · 0 评论 -
酒店之王【最大流】
题目链接 P1402 酒店之王 刚拿到这道题的时候,我想,我可以拆成一个二分图,以人作为中间的边,来构成这幅二分图,譬如说,人喜欢食物X和房间Y就将X->Y。但是这其中的bug显而易见,如果有一个人,喜欢食物X1和房间Y1并且还喜欢食物X2和房间Y2,那么光这个人,形成的匹配数就达到了2,显然是不正确的。 由此,正解又是什么呢?就是很纯粹的建图了,将每个人拆点,拆成i->i...原创 2020-03-09 20:11:02 · 211 阅读 · 0 评论 -
地震逃生【最大流模板题】
题目链接 P1343 地震逃生 简单的最大流的模板,小心“/0”的RE情况。读题。 另外,写的是ISAP。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <alg...原创 2020-03-09 16:33:28 · 134 阅读 · 0 评论 -
80人环游世界【有上下界最小费用可行流】
题目链接 P4553 80人环游世界 我们把城市拆点,保证每个点都是被经过了Vi次。然后保证只有最多M个人去参观,所以我们要做到限流,我将限流放在源点上,建立一个和建立边从到流量为M,就是保证了只有M个人。 剩下的就是有上下界网络流的基础构图了,这道题是有源汇的,所以别忘了要把原图中的源汇店要建立从汇点到源点的流量为INF,费用为0的边。然后把入流大于出流的与超级源点相连接,将入流小于...原创 2020-03-09 15:21:17 · 220 阅读 · 0 评论