题目地址:HDU4862
最小费用流做的还是太少。建图想不出来。。。
直接引用官方题解的话吧。。。
最小K路径覆盖的模型,用费用流或者KM算法解决,构造二部图,X部有N*M个节点,源点向X部每个节点连一条边,流量1,费用0,Y部有N*M个节点,每个节点向汇点连一条边,流量1,费用0,如果X部的节点x可以在一步之内到达Y部的节点y,那么就连边x->y,费用为从x格子到y格子的花费能量减去得到的...
分类:
其他好文 时间:
2014-07-23 13:09:07
阅读次数:
357
KM算法求的是完备匹配下的最大权匹配,是Hungary算法的进一步,因为Hungary算法是最大匹配的算法,不带权。
经典算法,想不出来的了,要参考别人的。然后消化吸收吧。因为真的很复杂的算法。
我理解算法匹配思想:
1 开始的时候,所有边都记录自己的最优匹配,不管有没有冲突
2 递归循环的时候,如果找不到自己的最优匹配,那么就找次要匹配
3 次要匹配不行,继续找下一个次优匹配,所有...
分类:
其他好文 时间:
2014-07-08 15:10:25
阅读次数:
153
贴模板~KM算法引进了顶标函数,不断缩小这个顶标来让相等子图的可能范围扩大#include#include//KM 复杂度O^3 using namespace
std;const int N=200;int lx[N],ly[N];//顶标函数int w[N][N];//图bool vix[N],...
分类:
其他好文 时间:
2014-06-02 21:53:12
阅读次数:
334
本来是打算昨天晚上写的, 昨天网速渣的连CSDN都进不去,没办法 只能现在来写了
先写写对KM算法的理解,KM算法是对每个点设置一个顶标,只有当边长等于两边点的顶标之和的时候才进行增广,这样就能保证得到的一定是最大权匹配。
如果找不到匹配的时候就对交替路中X集合的顶标减少一个d Y集合的顶标增加一个d。
这样两个点都在交替路中的时候x[i]+y[i]的和不边
X在 Y不在的时候x[...
分类:
其他好文 时间:
2014-05-07 15:50:04
阅读次数:
348