
图论
文章平均质量分 78
风声sp
这个人很懒,还没想到说点啥
展开
-
牛客练习赛24---E
感觉可能有更好的方法?想到的是构图,因为n和m都很小,因此每两个点之间都可以建一条边,然后传送点之间再多建一条权值为1的边。然后跑dijkstra算法就可以找到最短路了。代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) scanf("%d%d",&a...原创 2018-08-11 10:41:05 · 775 阅读 · 0 评论 -
P2341 [HAOI2006]受欢迎的牛
如果一个牛,是明星牛,因为喜欢的关系是可以传递的,因此他喜欢的牛也都是明星牛。反之,以为这只明星牛被所有牛喜欢,那么他喜欢的牛也一定喜欢他,两只牛也一定是相互喜欢的,继续传递下去,下一只牛喜欢的也一定是明星牛,他们之间一定相互喜欢,因此,所有明星牛一定构成一个强连通分量。 并且,这个强连通分量一定有一个性质,这个强连通分量出度为0,即不存在一个点有一条指向强连通分量外一个点...原创 2019-03-05 09:33:33 · 218 阅读 · 0 评论 -
P2055 [ZJOI2009]假期的宿舍
首先先理清楚一下这题的关系,每一个人要么是学校里的学生,要么不是。而是学校里学生,要么回家了,要么没回家。那么可以提供床位的,就是学校的在校学生,而需要床位的,就是不是这个学校的学生的人,和在学校没回家的在校学生。一个人占一张床,而在校学生自己可以睡自己的床,因此我们把所有的人分成两部分,需要床的和提供床的,在校学生不回家的两边都有(建一条自己到自己的边),根据认识关系建边,因此我们得到了二分图,...原创 2019-02-28 22:56:10 · 214 阅读 · 1 评论 -
P1993 小K的农场
差分约束的模版题,建图我们选择 a b c 代表 v(b) - v(a) &lt;= -c 建图,然后注意到在区间 [ i , i + 1] 里面,有 v(i + 1) - v(i) &lt;= 1且 v(i) - v(i + 1) &lt;= 0,这样建图,可以保证整张图的联通性,然后spfa跑图上最短路(有负权边),如果存在负环,则方程无解,否则若存在最短路,则必定有解代码如下:#i...原创 2019-02-28 21:07:58 · 206 阅读 · 0 评论 -
洛 谷 P1119 灾后重建
询问x到y的距离,首先想到Flody方法,但是题目中,给定了最短路上,不能有城镇建好的时间超过 ti 的,因此,如果对每一次询问都跑一边Floyd,那么肯定会超时。因此我们需要更好的思路,Floyd的是基于动态规划实现的最短路算法,转移方程为dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);表示i点到j点的路径,可以用i到k,k到j点路径来松弛...原创 2018-12-04 22:38:29 · 208 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学
传送门:https://www.luogu.org/problemnew/show/P1330 很神奇的做法,之前没有仔细思考,贪心+优先队列去找尽可能连接多条边的点,但其实是有问题的,这样贪心的结果很可能是没有解的,而选取其他的没那么多条边的点去操作,反而是可能有解的,所以贪心不可取。 看了大佬们的思路才理解到这个题可以这样设计(思路借鉴的,已注明转载),这...转载 2018-10-08 21:09:02 · 236 阅读 · 0 评论 -
洛谷 P2661 信息传递
传送门:https://www.luogu.org/problemnew/show/P2661 这个是一个图的遍历问题,主要是2和7个点被卡了 类似于tarjan,我们在dfs的时候遍历到那个节点,用一个时间戳记录那个节点被搜索到的顺序,因为每次搜索一定会存在环,那么搜索到时间戳已经被记录的节点的时候,时间戳的差+1就是我们这个环的大小。 ...原创 2018-10-08 19:16:39 · 251 阅读 · 0 评论 -
暑假前专题题解---图论---B
样例应该是错了,这题大概是寻找最小生成树是不是唯一的,也就是找次小生成树,对于一颗最小生成树,判断是否唯一的情况就是枚举最小生成树上的两个点,因为是树,两点链接一之后,一定是一个环,对于这个环,我们处理出这个环上最大的一条边,删去这个环上最大的一条边,得到的也是一棵树,因为删去的是最大的一条边(这条边不能再最小生成树以内。),所以留下的树,如果这颗树的权值和等于最小生成树,那...原创 2018-08-07 21:59:47 · 1061 阅读 · 0 评论 -
暑假前专题题解---图论---A
对于这个题,我们建立反向边即可,然后从k开始bfs,第一个入队的,出度为0的点,到这个点的距离就是我们要的答案。注意原点的权重初始值是1 ,自己本身也是一门要选的课。代码如下#include <bits/stdc++.h>using namespace std;typedef pair<int, int> pi;const int...原创 2018-08-07 19:36:37 · 221 阅读 · 0 评论 -
牛客练习赛24---C
当时写复杂了,发现其实就只有两种颜色,对于每一个颜色计数,然后记录每一种颜色出现的当前次数的时候是什么位置。然后每一个查询就可以做到O(1) 查询。代码如下,可以简化一下,has数组是可以不用开的吧。#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) sc...原创 2018-08-11 10:30:11 · 205 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2) E - Number of Components
要求这个所有的和,感觉不是很好想首先这个图,是一条长链。对于联通的 i 和 i+1 两个点,考虑他们对答案的贡献,如果他们不联通,那么对答案的贡献就是1对于 l <= ai <= r 同时使得 ai+1 > r || ai+1 < l 里所有的 l 和 r,对答案的贡献都是1反之对于l <= ai+1 <= r 且 ai 不在范围内,所有...原创 2019-04-20 22:45:21 · 257 阅读 · 0 评论