题解 CF103E 【Buying Sets】
安利 : 九月杂题选做-洛谷博客 九月杂题选做-cnblogs
双倍经验 : LOJ#6045. 「雅礼集训 2017 Day8」价
首先把价值取反,然后问题转换为求最大权值。
考虑一个最小割模型:
S连向集合,容量INF+权值,割掉这条边相当于不选这个集合;
集合连向集合内的数字,容量INF;
数字连向T,容量INF,割掉这条边相当于选这个数字;
不难发现在最小割方案中,割掉集合连向集合内的数字的边是不优的。
因为有完美匹配,所以对于任意左部点集合
又因为边权加上了
因此不选的集合的个数 + 选的数字个数 = n,所以可以得到选的集合个数 = 选的数字的个数。
然后跑一个最小割即可。
代码见 : my solution