神仙建图... 最多可以放上几个,也就是全都放上去之后尽量少删掉几个。 发现马总是会由同色攻击至异色,于是将两点之间连边,最后一定是一个二分图。 最后删掉的就是二分图的最小割,也就是最大匹配。 然后随便固定一个顺序,建立源点s以及汇点t,然后就跟普通二分图匹配的做法一样了。 ...
分类:
其他好文 时间:
2018-12-15 10:27:09
阅读次数:
158
题目大意: 在一个n*m的房间中 ‘X’为墙 ‘D’为门 ‘.’为人 门只存在与外围 人每秒钟只能向四连通区域走一步 门比较狭窄 每秒钟只能通过一个人 求所有人逃脱的最短时间 如果不可能则输出impossible 对每个门 广搜出能在这个门逃脱的人的逃出时间 将 对应各个时间的这个门 当做不同的点 ...
分类:
其他好文 时间:
2018-12-14 21:07:23
阅读次数:
147
很容易想到去吧棋盘模型转为二分图。 发现是一个类似行列匹配的问题。 进一步,如果每一个行都可以找到一个列与之配对的话,一定可以通过交换满足要求。 直接dinic求二分图最大匹配即可。 cpp include include include include include include includ ...
分类:
其他好文 时间:
2018-12-05 10:23:47
阅读次数:
158
二分图定理的一些证明: 1.最小顶点覆盖 定义:能覆盖所有的边的最少顶点数(或是最小点权和) 最小顶点覆盖 = 最大匹配数 证明:假设最大匹配是M。为了求最少的点让每条边都至少和期中一个点关联。 M个点是足够的。就是说他们覆盖最大匹配的那M条边后,假设有某边没被覆盖,那么把它加入后会得到一个更大的匹 ...
分类:
其他好文 时间:
2018-11-28 12:40:28
阅读次数:
151
题意:图没什么用 给出一个地图 地图上有 点 一次可以覆盖2个连续 的点( 左右 或者 上下表示连续)问最少几条边可以使得每个点都被覆盖 最小路径覆盖 最小路径覆盖=|G|-最大匹配数 证明:https://blog.csdn.net/qq_34564984/article/details/5277 ...
分类:
其他好文 时间:
2018-11-25 01:27:29
阅读次数:
233
<题目链接> 题目大意: 给你n个点和m条边,每条边代表两点具有匹配关系,问你有多少对匹配是冗余的。 解题分析: 所谓不冗余,自然就是这对匹配关系处于最大匹配中,即该匹配关系有意义。那怎样判断该匹配是否在最大匹配中呢?我们可以枚举每一对匹配,然后对其进行取消其匹配关系,对其余的匹配跑一遍最大匹配,如 ...
分类:
其他好文 时间:
2018-11-20 01:24:26
阅读次数:
162
二分图如果是没有权值的,求最大匹配。则是用匈牙利算法求最大匹配。如果带了权值,求最大或者最小权匹配,则必须用KM算法。 其实最大和最小权匹配都是一样的问题。只要会求最大匹配,如果要求最小权匹配,则将权值取相反数,再把结果取相反数,那么最小权匹配就求出来了。 下面是几个模板: 1、匈牙利算法,例子是h ...
分类:
其他好文 时间:
2018-11-15 22:40:43
阅读次数:
184
将未建立贸易关系看成连一条边,那么这显然是个二分图。最大城市群即最大独立集,也即n-最大匹配。现在要求的就是删哪些边会使最大匹配减少,也即求哪些边一定在最大匹配中。 首先范围有点大,当然是跑个dinic,转化成最大流。会使最大流减少的边相当于可能在最小割中的边,因为删掉它就相当于无代价的割掉了一条边 ...
分类:
其他好文 时间:
2018-11-07 00:50:32
阅读次数:
221
假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个 / 及其左边的字符串: ...
分类:
系统相关 时间:
2018-11-02 11:05:50
阅读次数:
183
思路: 对于不存在孤立点的图,|最大匹配| + |最小边覆盖| = |V|,|最大独立集| + |最小顶点覆盖| = |V|。对于二分图而言,|最大匹配| = |最小顶点覆盖|。(V是图的顶点集合) 实现: ...
分类:
其他好文 时间:
2018-10-27 18:43:39
阅读次数:
128