图论
文章平均质量分 66
MatrixYg
暂无
展开
-
【BZOJ 4819】新生舞会
1.题目链接。题意十分的好懂,做法也是十分的裸。2.把分式变形一下: 这样,把每条边的权值赋值为a[i][j]-C*b[i][j],显然C是单调的。二分这个C,对于每个C,判断图存不存在一个完美的匹配。注意权值非负。判断是不是完美匹配,费用流或者KM都行...原创 2019-11-21 15:08:51 · 284 阅读 · 0 评论 -
【HDU 1599】最小环
在一个无向图里找到最小环,环里面的元素大于等于3.其实时floyd的引用。考虑floyd算法,首先枚举中间点k.在利用k来松弛s[i][j]。(s[i][j]代表i到j的最短路)。在算法没有执行的时候,从i到j肯定是不经过k点的,所以如果s[i][j]!=INF,并且i-k,k-j存在路径,那么说明原图中存在环路。并且可以这个环路的点的数量大于等于3.所以把这个值记录一下,取个最小就是答案。...原创 2019-10-17 23:54:54 · 294 阅读 · 0 评论 -
【HDU 5934】Bomb
1.题目链接。题目大意:n个炸弹,每个炸弹具有四个参数,分别是这个炸弹的位置(x,y),爆炸时的半径,以及引爆它的费用。引爆炸弹的规则是,当一个炸弹被引爆,在他爆炸半径内的炸弹也会被引爆。问引爆这n个炸弹需要的最少费用。2.如果一个炸弹能够引爆另外一个炸弹,我们连一条指向被引爆的炸弹的有向边。这样n^2建图之后,显然是一个有向图。在这个有向图中,所有的强连通分量其实可以被看做一个点,因为只要引...原创 2019-06-22 16:53:45 · 382 阅读 · 0 评论 -
【HDU 5943】Kingdom of Obsession
1.题目链接。题意是比较简洁的,给定n个数,对于每个数加上s,问存不存在一种映射使得新数列的每一个数能够被映射到唯一的一个位置j[1<=j<=n],并且s[i]%j=0.2.其实数据是比较良心的,为什么第一组数据是NO?因为出现了一个素数,我们知道,素数只能整除1和他自己。所以当这个序列存在素数的时候,这个素数只能被放在1位置,当这个序列存在两个素数时,就无解了。由于这个序列是连续...原创 2019-06-23 14:07:46 · 184 阅读 · 0 评论 -
【POJ 2135】Farm Tour
1.题目链接。题目大意:给定一个n个点m条边的无向图,每条边都有一个长度,求从1->n->1走过的长度最小值并且每条边只能走一次。2.由于边是无向的,其实这个题目就是在问从1到n两条不相交的路径的长度之和最小值。考虑把长度作为费用,就转化成了一个每条边的容量为1的费用里问题,建立源点s,到1的流量为2,费用为0,汇点t。到n的流量为2,费用为0,所以就成了s,到t的MCMF。...原创 2019-07-30 13:24:56 · 145 阅读 · 0 评论 -
【POJ 3281】Dining
1.题目链接。题目大意:N头牛,F种食物和D种饮料,每头牛都有一些喜欢的饮料和食物,现在做一下分配,每头牛只能吃一种食物和喝一种饮料,没中过食物喝饮料也只能被一头牛拥有。问最多能够满足多少头牛的需求。2.一个类似二分图的匹配问题,对于每种食物,把它和喜欢它的牛连边,每种饮料也是如此。这样直接跑最大流是不可行的,因为这样直接流可能会让一头牛得到两种食物,或者喝到两种饮料,其实这就涉及到了一个问题...原创 2019-07-30 14:01:01 · 150 阅读 · 0 评论 -
【牛客多校训练第第六场 H Train Driver】
1.题目链接。给定的一张图,有三个人A,B,C,和两个集合s1,s2.A会等概率的在集合s1中的点出现,B会等概率的在集合s2中的点出现,C会等概率的出现在图上的任意一个点。现在A,B,C要在图中的某个点集合,问他们所走过的最短路程的期望是多少?2.在图中新建一个点(n+1),然后定义个点到这个点的距离就是A,B所在点到这个点距离最短距离之和。然后C点到这个点的每一条最短路就对答案有贡献。所以...原创 2019-08-04 14:31:41 · 329 阅读 · 0 评论 -
【POJ 3164】Command Network(最小树形图)
1.题目链接。最小树形图问题:最小树形图就是有向图的最小生成树,当然生成的是一颗有向树。具体可见:最小树形图。2.这个题就是最小树形图的裸题了,偷了大佬的板子。//参考博客:https://blog.csdn.net/u011815404/article/details/85858501//#include<bits/stdc++.h>#include<iost...原创 2019-08-06 20:00:11 · 127 阅读 · 0 评论 -
【平面图上的Euler公式】
1.首先说一个人尽皆知的问题,就是对于一个封闭的空间几何体,它的点数,边数,和面数是满足一定的关系的。准确的说满足这样的关系:点数-边数+面数=2。V-E+F=2.然后说一个推广。2.在平面图中,也有这样的公式。记得在17年的乌鲁木齐区域赛好像有过考察,但是由于比较容易看出规律,实际上这个题目是可以很快的推出来的。最近在牛客上又看到了这个题目,拿出来分析一下。...原创 2019-08-20 19:35:38 · 1669 阅读 · 0 评论 -
【P 1525】关押罪犯
1.题目链接。这和BZOJ 1370是一个东西:镜像并查集。假设a+n和a的敌人,把a+n这个人叫做a的镜像,同理b+n是b的镜像。然后对于给定的关系x,y连边,边权就是怒气值,然后成了一个无向带权图。(1)先说第一种搞法,也是最直观的。显然题目的要求就是再说把这个图删掉一些边使之成为二分图,那么答案具有单调性。直接二分答案,然后暴力check。check每一个值可以采用染色做,当前点赋值为1...原创 2019-09-26 17:29:58 · 175 阅读 · 0 评论 -
【ZOJ 4124】L - Median
1.题目链接。题目大意:有n个数,给出m个他们之间相对的大小关系,问从这m个关系中,对于每一个数,是不是可以让这个数作为这个数列的中位数。2.传递闭包加了一点点的改进。对整个图求完传递闭包之后,对于每个点记录一下有多少个比他的的,有多少个比它小的,然后如果这两个数据有任何一个是大于n/2的,那么显然是不成立的。否则是可能的。当然,特判一下不合法,在这个有向图里面不合法的地方就是有两个点存在双向...原创 2019-06-05 18:00:31 · 224 阅读 · 0 评论 -
【HDU 3002】求解无向图的最小割-SW算法
1题目链接。题目大意:给定一个无向图,删除一些边使得图不再连通,求最下的代价。(代价定义为删除的边权和)。2.首先我们需要判断图是不是联通的,判断无向图是否联通直接并查集即可。若是联通,那么就是求解一个无向图的最小割。如果采用固定原点枚举汇点跑网络流,复杂度达到O(N^5)。无向图的最小割叫做全局最小割,求解全局最小割有专门的SW算法。这道题也是一个模板题。#include<bit...原创 2019-04-23 14:52:01 · 565 阅读 · 0 评论 -
【Codefoeces 402E】一个有趣的转化
1.题目链接。题目大意:给定一个矩阵原来矩阵里面所有的数据都是非负数,让你确定是不是存在一个k使得这个矩阵的k次幂之后,矩阵的每一个数据都是正数。2.我们可以把这个矩阵看成一个有向图的邻接矩阵,我们知道,在有向图的邻接矩阵里面,它k次幂之后,每个元素的值是具有十分重要的意义的。matrix[a][b]-->matrix^k[a][b].就是代表从a到b走了k步有多少种方案数。这个之前提到...原创 2019-03-26 14:15:06 · 146 阅读 · 0 评论 -
最小生成树——kruskal算法
1.寻找无向图的最小生成树,图的最小生成树其实就是通过一些删除边然后重构图使得这张图关于边或者点的权值和最小,比如HDU1233这是一道最小生成树的裸题。我们通过这个题来介绍kruskal算法。2.其实图中只用两种元素,点和边。从这两种对象出发来解决这个问题就有两种算法,prime算法和kruskal算法。他们的思考的角度分别是从从点来思考,和从边来思考。3.kruskal算法从边的角度来...原创 2018-11-02 09:21:02 · 253 阅读 · 0 评论 -
拓扑排序
题目链接。题目大意:一个很实际的问题,比赛中只知道两两参赛者的胜负,确定总的胜负。这个问题其实有很多中写法,模拟也是可以的。但是最经典的写法我觉得还是使用拓扑排序来做。图的拓扑排序其实就是给图的每一个顶点编号,使用一种规则将图的顶点有序的输出,这就是图的拓扑排序。这是对有向无环图来说的,其实这个应用有很多种,比如图的判环,只有无环图才能完成拓扑排序。又比如时间的安排,比赛名次的确定,实际上我们...原创 2018-12-05 20:05:05 · 123 阅读 · 0 评论 -
并查集
1.先放一个很有意思的大神的博客,关于并查集的解释。并查集。2.并查集看名字就知道是干嘛的了。并和查,合并等价类,查询当前元素属于哪个等价类。(什么叫等价类?就是具有相同特性的一组个体,狭义一点,就在在一个连通分量的数据)。这里我就不再废话了,直接给出HDU1232的代码喽。#include<iostream>using namespace std;#pragma war...原创 2018-12-21 21:34:45 · 125 阅读 · 0 评论 -
最短路算法-迪杰斯特拉算法
1.图中的最短路径求解的算法花样百出,但是最常用的就是那几种很耳熟能详的算法。今天我们来了解一下十分常用的迪杰斯特拉算法。2.dj是一种求非负权值的单源最短路算法。通俗的讲就是求这样的问题:在图中的两个点s,t并且这个图中没有负的边权,那么求解从s到t的最短的路径权值和是多少。首先说明几个特点,注意dj的使用范围,非负权值的单源最短路。但是虽然我们求的是s到t的最短路,但是求解过程中会把s到图...原创 2018-12-23 14:37:17 · 1874 阅读 · 0 评论 -
图的几种遍历方式
1.图的遍历方式大概也就两种吧,DFS和BFS。但是有不同的实现方式,上次听说我在递归转非递归算法中实现了二叉树的递归转非递归,然后有人说那图的呢?其实图的DFS转成非递归还要简单一些。2.首先是BFS,BFS其实很简单了。使用队列来保存与当前节点相邻的所有节点,然后用这些节点作为基础继续拓展。我们这里首先给出图的定义和初始化的代码。#define MAX 10typedef stru...原创 2018-12-25 17:09:49 · 4326 阅读 · 0 评论 -
网络流
1.首先我们思考一个生活中十分常见的场景:自来水的供应。当我们打开水龙头之后,自来水就会哗哗的的流出来,这些水经历了很多个水管来到了家里。我们通过这个模型解释问题。2.网络流,图论中把水流抽象出来,在有向图中的流统称为网络流,可以代表很多的含义,可以是水,车流量,电流量等等。首先,我们需要知道两个概念:源点和汇点。源点就是自来水厂嘛,一切流的产生地点。汇点就是流的终点,流向的地方。知道了这些之...原创 2018-12-31 23:29:33 · 485 阅读 · 0 评论 -
【HDU5883】欧拉图的判断
1.题目链接。题目大意:N个湖之间有M条河连接,每个湖有一个数字,现在有一个这样的需求,要求经过所有的河一次,并且要求在这个路径上的所有湖的数字异或起来最大。2.首先分析第一个条件,经过所有边一次,那么就是欧拉通路问题了,这个问题我们很清楚,在无向图中对每个顶点的度数进行统计,只要是奇数度数的顶点是0个或者两个,那么就存在欧拉通路,如果是0个,就是欧拉回路。(注意,不可能出现1个。因为出现一个...原创 2019-02-25 22:08:21 · 4201 阅读 · 1 评论 -
【HDU5889】最短路+网络流
1.题目链接。题目大意:国王位于点1,敌人位于点n。敌人要进攻,会选择最短路。国王可以在途中设置障碍,但是在设置障碍的时候会根据每条边的花费是不同的,现在国王想花费最少的费用来设置障碍,使得敌人在进攻的路上至少会遇到一个障碍,求出这个最小的费用。2.这个题,首先我们可以想到的是,n到1的最短路可能存在的不止一条,所以我们找出所有的最短路,然后找到每一条最短路上的最小的费用,加起来就是答案。不过...原创 2019-02-26 19:19:19 · 318 阅读 · 0 评论 -
【HDU1269】tarjan算法求强联通分量
1.题目链接。判断图是不是一个强连通的图。tarjan算法对图的强连通分量计数即可。#include<bits/stdc++.h>#include<iostream>#include<vector>#include<algorithm>using namespace std;#pragma warning(disable:4996)...原创 2019-03-18 16:41:17 · 137 阅读 · 0 评论 -
【HDU2157】有向图邻接矩阵应用
1.题目链接。题目大意:给定一个有向图,从图中一点a到另一点b只走k步(包括b)有多少种方案?2.这是一个很有用的性质,结论就是这个图邻接矩阵的k次幂对应的矩阵那个点的数值。其实证明也不难,我们从矩阵乘法可以看出一点端倪:c[i][j]=c[i][j]+a[i][k]*b[k][j].这个k就是位于i和j之间的点,枚举k,求和就是方案数。这个性质我忘了叫做什么了,只是在学习离散的时候听老师讲了...原创 2019-03-25 22:16:02 · 859 阅读 · 0 评论 -
最短路——迪杰斯特拉算法
1.在图论中经常会碰到最短路问题。最短路顾名思义就是在有向连通图(也就是连通网)中寻找两点之间的最短距离。为了解决这个问题人们提出了很多行之有效的算法,这其中有著名的五大算法:Dijkstra算法,SPFA算法,Floyd算法,Bellman-Ford算法,以及基于启发式搜索的A*算法。我们接下来会学习每一个算法,首先是DJ算法。2.DJ算法是一种求解单源最短路非负权值的有效方法。基本思想:首...原创 2018-11-02 08:58:35 · 679 阅读 · 0 评论