随笔分类 -  图论

该文被密码保护。
posted @ 2019-08-27 18:15 yyys 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-08-27 17:17 yyys 阅读(1) 评论(0) 推荐(0)
摘要:传送门 思想很重要,题目给出了每个星球的Hi大于等于与该星球直接相连的星球数(即度数)。 就说明从0点出发,一定可以再回到0点。 在第一次dfs中把一些还可以加的流加入使得答案更大。因为图此时已经连通。 然后对于相邻的两个点,就一定至少有一个的度数为0。 在第二次dfs中运用“退流”思想,对于每一个 阅读全文
posted @ 2019-08-25 21:49 yyys 阅读(291) 评论(0) 推荐(1)
摘要:模板题 bfs实现,借用dep比较路径的长度 #include<bits/stdc++.h> #define mod 100003 #define M 2000002 #define N 1000002 using namespace std; int read() { int x=0,f=1;ch 阅读全文
posted @ 2019-08-23 21:15 yyys 阅读(172) 评论(0) 推荐(0)
摘要:传送门 公式图片来自洛谷题解 因为求V之和与P之和的比值的最大值。这个值不超过200 考虑到二分答案,设ans为最大值,则有 可以看出是01分数规划 那么每次就重新分配边的权值: ans*ci-vi 再判负环,有说明ans不成立,反之成立。 特别提一下:这里判负环是用dfs版的spfa,而不是bfs 阅读全文
posted @ 2019-08-21 10:43 yyys 阅读(169) 评论(0) 推荐(0)
摘要:传送门 因为是求路径条数,而k的范围不大,想到用dp转移。 用f[i][j]表示从n到i的距离<=最短距离+j的方案数。 用d[i]表示从i点到n点的最短距离。 对于边<u,v,val> f[u][j]=f[v][j+d[u]-d[v]-val]。 记忆化搜索实现dp过程。 小技巧: 1.搜索时从n 阅读全文
posted @ 2019-08-21 10:43 yyys 阅读(252) 评论(0) 推荐(0)
摘要:传送门 主要考察了对Floyd算法的认识程度(告诉我们背板子是不行的)。 Floyd,代码很简单,而其本质思想是通过其他的点进行中转来求的两点之间的最短路。因为我们知道,两点之间有多条路,如果换一条路可以缩短距离的话,就更新最短距离。而它最本质的思想,就是用其他的点进行中转,从而达到求出最短路的目的 阅读全文
posted @ 2019-08-21 10:42 yyys 阅读(238) 评论(0) 推荐(0)
摘要:传送门 求对于每个点删掉1到他的最短路上的最后一条边(就是这条路径上与他自己相连的那条边)后1到他的最短路的长度。 即:最短路径树:图中的源点到所有结点的最短路径构成的树。 最短路径树在dijkstra过程中就可以求出来,因为这个过程就相当于走一棵树。 然后就是选入杂边,对于一条杂边<u,v>,它加 阅读全文
posted @ 2019-08-21 10:42 yyys 阅读(397) 评论(0) 推荐(0)
摘要:模板题传送门 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图。 朱刘算法用来求最小树形图,复杂度O(nm)。 大概思想就是缩点+贪心加边。 如果图中存在环,就把环缩成一个点,一直到没有环为止。 考虑正确性: 最小树形图和最小生成树的区别就在与有方向,对于一个环,我 阅读全文
posted @ 2019-08-21 10:08 yyys 阅读(1972) 评论(0) 推荐(0)
摘要:改编自BZOJ2521 [Shoi2010]最小生成树 题面 1 construct 1.1 Description Me懒得编题面了 给出一个n个点m条边的图,每条边有边长。现在我们钦定了一条边,要使该边一定出现在最小生成树中 你可以进行如下操作:将某条边的长度+1,并付出1的代价 最少需要付出多 阅读全文
posted @ 2019-07-13 21:44 yyys 阅读(282) 评论(0) 推荐(0)
摘要:此题改编自[NOIP2014]day2t2寻找道路 题面 1 path 1.1 Description 众所周知,Bfk经常为找不到路而烦恼 Bfk终于迎来了它高中以来第一个完整的暑假,它决定从假期里抽出一段时间去日本旅游。可是,对于连教师宿舍都找不到的Bfk来说,在旅途中不迷路是一件很困难的事情。 阅读全文
posted @ 2019-07-13 21:12 yyys 阅读(227) 评论(0) 推荐(0)
摘要:主要是存个板子 时间复杂度O(e loge),比朴素的快多了。 存边的时候还是用vector吧!自己打的前向星不知道为啥会超时,难道是边界哪里越了嘛。。。 阅读全文
posted @ 2019-07-11 21:16 yyys 阅读(241) 评论(0) 推荐(0)
摘要:传送门 题目大意是: 有一些点,分为几层,然后层与层之间可花费代价C到达,还有一些特殊边,使得某个点和某个点之间花费某代价可以到达,求从1到n的最小代价。 一开始的想法是,既然层与层之间可以到达,那么对于第i层和第i+1层,把第i层的所有点与第i+1层的所有点连边,权值为C,特殊的边该怎么连怎么连, 阅读全文
posted @ 2019-07-11 21:13 yyys 阅读(299) 评论(0) 推荐(0)
摘要:传送门 最小生成树很好求,那么对于次小生成树要怎么求呢? 稍加思考,我们可以想到,次小生成树与最小生成树差的只是一条边。 为什么呢?我们先建出一棵最小生成树,满足使用的边都是最小的,剩下的边(称为非树边)一定没有树边优。如果我们加入一条非树边,删除最小生成树中的一条边,次小生成树一定是包括在以这种方 阅读全文
posted @ 2019-07-11 20:33 yyys 阅读(5495) 评论(3) 推荐(11)