fzu1980 AbOr's story 最大权闭合图

AbOr's story

比赛开始很久了,才想出来是最大权闭合图这么个模型,可以转换成最小割来做

定义一个有向图G = (V, E)闭合图(closure)是该有向图的一个点集,且该点集的所有出边都还指向该点集。

分析这类模型,有个很重要的特征,满足  对于∀<u, v>∈ E,若有u∈V'成立,必有v∈V'成立  这个条件,这在布尔代数中叫“蕴含”,就表示选择一些点,就必然要选择另外一些点,这样就好比是数学里必要条件的关系,而且是每个点拥有点权,最后求的就是最大权问题。

题意:AbOr要通过girls赚钱,前提是you have all the kinds of gemstones that she like and play with her, then she will help you make some money !这样的话,赚钱和购买宝石之间就具有必要条件的关系,且宝石只要购买一次就行,符合构图方式,这样就可以建图了。

有N个girls(用X代替),M种宝石(用Y代替),S为源,T为汇

建3类边:

1。<S, X, money> money表示对于X这个girl能赚到的钱

2。<X, Y, INF> Y为X喜欢的宝石,这样能保证中间边不会加入最小割的行列

3。<Y, T, price> price表示购买宝石Y的价钱

这样用最大流算法求的最小割mincut

最后所求的最大权ans = 所有正点权之和(所有money之和, price为付出的钱,可以看成拥有负点权) - mincut

 

这是我做的第二道最大权闭合图,纪念一下下,图论里的建图方式真是奇妙啊。。呵呵

你可能感兴趣的:(ab)