随笔分类 -  图论

摘要:题目:给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数。 解法:匈牙利算法。(以前我总是不记得......)实质上应该有贪心的思想,每次都尽量匹配,找到能和自己匹配的也尽量让它们匹配。若对方已有匹配的对象,就让那个对象尽量调整来使自己这对能凑起来。而要注意,每次问过的对象就不要再问 阅读全文
posted @ 2016-11-18 11:00 konjac蒟蒻 阅读(261) 评论(0) 推荐(0)
摘要:题目:有一个图有N个顶点,M条边。边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向)。共T组数据。对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号)。 注意——坑爹的输出啊!!它不是平常的 YES 和 NO!! 解法:1. 阅读全文
posted @ 2016-11-18 08:54 konjac蒟蒻 阅读(234) 评论(0) 推荐(0)
摘要:题目:给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用。 解法:在Dinic的基础下做spfa算法。 阅读全文
posted @ 2016-11-17 18:13 konjac蒟蒻 阅读(182) 评论(0) 推荐(0)
摘要:题目:给出一个有向图,请输出从某一点出发到所有点的最短路径长度。 解法:spfa算法。 阅读全文
posted @ 2016-11-17 15:45 konjac蒟蒻 阅读(351) 评论(0) 推荐(0)
摘要:题目:给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。 解法:Kruskal求MST。 阅读全文
posted @ 2016-11-17 15:32 konjac蒟蒻 阅读(213) 评论(0) 推荐(0)
摘要:题目:给出一个网络图,以及其源点和汇点,求出其网络最大流。 解法:网络流Dinic算法。 阅读全文
posted @ 2016-11-17 15:23 konjac蒟蒻 阅读(287) 评论(0) 推荐(0)
摘要:题目:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 解法:倍增。 阅读全文
posted @ 2016-11-17 14:39 konjac蒟蒻 阅读(246) 评论(0) 推荐(0)
摘要:题目:有n个同学(编号为1到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 阅读全文
posted @ 2016-11-17 12:41 konjac蒟蒻 阅读(437) 评论(0) 推荐(0)
摘要:题目:DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用。DZY喜欢在地里散步。他总是从任意一个格点出发,沿着格线行走直到回到出发点,且在行走途中不允许与已走过的路线有任何相交或触碰(出发点除外)。记这条封闭路线内部的格子总价值为V,路线上的 阅读全文
posted @ 2016-11-16 19:35 konjac蒟蒻 阅读(848) 评论(0) 推荐(0)
摘要:题目:在一些一对一游戏的比赛(如下棋、乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况。有的时候,无聊的人们会津津乐道于统计有多少这样的剪刀石头布情况发生,即有多少对无序三元组(A, B, C),满足其中的一个人在比赛中赢了另一个人,另 阅读全文
posted @ 2016-11-16 19:20 konjac蒟蒻 阅读(222) 评论(0) 推荐(0)
摘要:题意:C公司有一些资源,每种只有1个,有A、B两个公司分别对其中一些资源进行分组竞标,每组竞标对一些资源出一个总价。问C公司的最大收益。 解法:最小割。将A公司的竞标与源点相连,B公司的与汇点相连,边容量为竞标价。而A、B公司的竞标中有资源冲突的竞标之间连一条边,容量为INF。这样的最大收益就是 总 阅读全文
posted @ 2016-11-13 22:15 konjac蒟蒻 阅读(326) 评论(0) 推荐(0)
摘要:题意:有一个区域,有'.'的陆地,'D'的深海域,'E'的浅海域。其中浅海域可以填充为陆地。这里的陆地区域不联通,并且整个地图都处在海洋之中。问填充一定浅海域之后所有岛屿的最长的海岸线之和。 解法:最小割。从“分隔”陆地和海域可以想到“割”的概念,然后我们先不考虑浅海域,要深海域和陆地的对数尽量大, 阅读全文
posted @ 2016-11-13 20:11 konjac蒟蒻 阅读(336) 评论(0) 推荐(0)
摘要:题意:有一个水塘,要求把它用围栏围起来,每个费用为b。其中,(#)代表草,(.)代表洞,把一个草变成洞需要费用d, 把一个洞变成草需要费用f。请输出合法方案中的最小费用。 解法:(不好理解......(‘・ω・’)っ) 【思考】 1.围栏把草和洞分隔开了,也就是“割”。但“割”只是把图中的点分成两部 阅读全文
posted @ 2016-11-12 15:53 konjac蒟蒻 阅读(263) 评论(0) 推荐(0)
摘要:题意:有一个N个点的有向带权图,要求找若干个有向圈,使得每个点恰好属于一个圈。请输出满足以上条件的最小权和。 解法:有向圈?也就是每个点有唯一的后继。这是一个可逆命题,同样地,只要每个点都有唯一的后继,那么它们一定恰好属于一个圈。而“唯一”可以想到二分图匹配。把每个点拆成两个点,分别放在二分图的两边 阅读全文
posted @ 2016-11-10 10:18 konjac蒟蒻 阅读(371) 评论(0) 推荐(0)
摘要:题意:有个N个点M个边的有向加权图,求1~N的两条不相交路径(除了起点和终点外没有公共点),使得权和最小。 解法:不相交?也就是一个点只能经过一次,也就是我后面博文会讲的“结点容量问题”。(呃不,写完这博文几天后的今天,我负责任地 m(._.)m 告诉大家,我不会写这博文了......我的时间不多了 阅读全文
posted @ 2016-11-10 09:25 konjac蒟蒻 阅读(295) 评论(0) 推荐(0)
摘要:题意:有一个N行M列的正整数矩阵,输入N个前1~N行所有元素之和,以及M个前1~M列所有元素之和。要求找一个满足这些条件,并且矩阵中的元素都是1~20之间的正整数的矩阵。输入保证有解,而且1≤N,M≤20。 解法:这题的图转换得极妙!(*^▽^*) 我们可以发现找到的矩阵需要满足3个条件:1.N行M 阅读全文
posted @ 2016-11-10 07:56 konjac蒟蒻 阅读(320) 评论(0) 推荐(0)
摘要:题意:有N个插头,M个设备和K种转换器。要求插的设备尽量多,问最少剩几个不匹配的设备。 解法:给读入的各种插头编个号,源点到设备、设备通过转换器到插头、插头到汇点各自建一条容量为1的边。跑一次最大流就可得到最多匹配的设备数。 注意啊,我这个代码在神奇☺的地方死循环了——判断队列为空的语句...... 阅读全文
posted @ 2016-11-09 21:18 konjac蒟蒻 阅读(324) 评论(0) 推荐(0)
摘要:题意:有N个潜在的bug和m个补丁,每个补丁用长为N的字符串表示。首先输入bug数目以及补丁数目。然后就是对M个补丁的描述,共有M行。每行首先是一个整数,表明打该补丁所需要的时间。然后是两个字符串,第一个字符串是对软件的描述,只有软件处于该状态下才能打该补丁该字符串的每一个位置代表bug状态("-" 阅读全文
posted @ 2016-11-06 22:23 konjac蒟蒻 阅读(266) 评论(0) 推荐(0)
摘要:题意:有一个N点M边的无向带权图,边权表示路径上的噪声值。有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值。(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径,用Floyd算法就可以搞定了~o(〃'▽'〃)o 阅读全文
posted @ 2016-11-06 19:52 konjac蒟蒻 阅读(291) 评论(0) 推荐(0)
摘要:题意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出。(N≤25,L≤25,注意输出格式) 解法:由于N比较小所有n^2或n^3的复杂度都没有问题。所以就O(n^2)读入;O(n^3)Floyd算法求出传递闭包,d[i][j]表示 i 是否直 阅读全文
posted @ 2016-11-06 19:37 konjac蒟蒻 阅读(848) 评论(0) 推荐(0)