
图论
FrostMonarch
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
codeforces 1305D - Kuroni and the Celebration(树,节点度数)
题目大意: 已知有一个n个节点的树。我们可以询问n/2(向下取整)次任意两个节点的LCA(关于什么是LCAhttps://www.geeksforgeeks.org/lowest-common-ancestor-binary-tree-set-1/),问我们怎么确定根节点。 n<=1e3 解题思路: 因为这里的n的范围,我们考虑n^2的算法。 首先有一个结论:我们每次询问两个度数...原创 2020-03-05 09:58:13 · 359 阅读 · 0 评论 -
leetcode 1263 Minimum Moves to Move a Box to Their Target Location (双向队列 BFS)
题意: 在推箱子游戏中,怎么求人物为了把箱子推到终点所需要的推箱子次数最少的次数。 解题思路: 这题的题目数据非常小,考虑用暴力搜索的方法。很自然地我们可以建立状态 其中pr,pc代表玩家的位置;br,bc代表箱子的位置。 用flag表示走过的位置不能再走。 一开始我想直接用dfs搜是不是就可以呢?后来发现,dfs走的路径不代表就是最优路径。无权图的最短路难道不是BFS。接着再用B...原创 2019-11-22 22:43:19 · 420 阅读 · 0 评论 -
UVA 10765 Doves and Bombs(tarjan找桥)
题目大意: 给你一个图,我们需要找出去掉任意一个点后连通分量的个数。 解题思路: tarjan算法可以快速地在O(n)时间内找到所有的割点,但是这个算法不能告诉我们这个是割点同时去掉这个割点后有多少个连通分量。 难道我们又要退化为O(n^2)找割点联通分量,这题这样做理论上来说应该会TLE,奈何数据太水。这里给一个正确的做法。 其实我们在判断tarjan割点的时候有两个很重要的变量,df...原创 2019-11-13 21:23:22 · 169 阅读 · 0 评论 -
洛谷 P1113 杂务(拓扑排序,递归)
题目大意: 有一个有向无圈图,每个节点看作一个任务,一个任务需要完成必须先完成父亲节点的任务,每个任务都有耗时。假设现在所有不相关任务都可以并行执行,问最短多少时间可以把所有任务完成。 解题思路: 首先,注意题目中比较坑的点。这里必须是完成所有父亲任务才能完成本个任务,所以某个任务的执行时间是 其中par为i的父亲。 有这个递推后,我们就要知道怎么完成这个递推,很明显我们这里要按照拓...原创 2019-11-01 15:25:24 · 343 阅读 · 0 评论 -
UVA 10158 (记忆化搜索)
题目大意: 已知有n个人,他们之间有敌对还有友好关系,已知: 自己和自己为好友。 a和b为好友,那么b和a也为好友 自己的敌人是敌人。 自己和自己不能为敌人。 a和b为敌人,那么b和a也为敌人 敌人的敌人是朋友 现在有4个操作,比如: (1)设置a和b为朋友 (2)设置a和b为敌人 (3)询问a和b是否为好友 (4)询问a和b是否为敌人 解题思路: 网上大部...原创 2019-10-24 15:58:04 · 151 阅读 · 0 评论 -
洛谷 P1462 通往奥格瑞玛的道路(最短路,二分)
题目大意: 已知一幅图,从一个点出发到终点。每个点有一个点权值,每条边有一个负权值。问怎么走,可以使得我们从起点到终点时,经过的点权最大值最小,同时边权累计不超过-b,其中b是负数。 解题思路: 这种是经典的minimax问题,什么最小当中找最大,最大当中找最小。假设这里没有b的约束,同时这里的点权变为边权的话,我们可以生成一个最小(大)生成树,生成树上的两个点的路径的边权最小(大)值即为所...原创 2019-10-17 16:51:39 · 285 阅读 · 0 评论 -
uva 253 Cube painting(图的同构)
题目大意: 对两个骰子染三种颜色,问我们是否可以通过对某个骰子进行旋转得到另一个骰子。 解题思路: 网上大多都是模拟暴力的过程,这里我给出另一种解决思路。其实骰子我们可以建为一个图。每一个面作为一个节点,每个节点之间的连接我们连一条边。现在问题等价于转换为求两个图的同构。同构是什么意思呢?我们可以对每个节点进行标号,我们找到两个图中的点的一一对应关系,之后我们证明按照这样一一对应后,这两个图...原创 2019-10-11 12:16:27 · 315 阅读 · 1 评论 -
洛谷 P1341 无序字母对(欧拉迹)
题目大意: 有字母对,问我们允许字母对中字母对调,可以把这串字母首尾相接吗?能够的情况下,问怎么让结果字典序最小。 比如,ab cb,我们可以通过对调第二对字母的cb为bc从而得到,ab bc首尾相接。 解题思路: 我们把字母当作节点,同一个字母对中字母连一条边,然后跑欧拉回路即可。另外这里需要字典序最小,我们在用fluery算法跑欧拉回路时,优先选择排序靠前的节点即可。 废话: 注意...原创 2019-10-08 23:23:48 · 341 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学
题目大意: 有一个图,图中有n个点,m条边,我们可以对其中的一些点打标志,被打标志的点会影响邻接所有的边,问为了把所有边都影响,同时最少的打标志的点的点数。同时相邻的点不能打标志。 解题思路: 一开始以为是贪心,利用最小生成树的思路去做,每次选择度数最大的点,这种解法是错的! 其实这题考了偶图,我们只需要按照偶图来进行染色,一个连通分量中我们可以从任意一个点开始染色,然后黑白黑白交叉染,选...原创 2019-09-26 09:43:31 · 114 阅读 · 0 评论 -
codeforces 580 div2 Shortest Cycle(位操作 图中找圈)
题目大意: 有数列An,在数列中若任意两个数a,b。若a & b !=0 ,我们则在a,b之间连一条线。问已知An,形成的最小的圈的节点的个数。 解题思路: 由于n=1e5,所以我们不能很naive的建图,每个点都查询,否则复杂度到达n^2。这时候,我们发现,从二进制位来看,若三个或以上数字的同一位都是1,那么可以直接输出3。这个key,导致了我们建图的复杂度大大降低为 nlogn ...原创 2019-08-19 15:58:20 · 359 阅读 · 0 评论