题目大意:

给N个东西分AB类,分到A类和B类分别得到相应的钱记为A[i],B[i],然后有一些冲突关系<x,y,z>,如果物品x,y不同类需要付出z的钱。还有一些外快<S,x,y>,当某个集合里的元素都是x类的时候得到y的钱。 求最大收益。

思路:

1.如果只考虑冲突关系,那么就是非常裸的最小割,显然这题应该在最小割的基础上加点东东. 然后集合附加权貌似是个比较经典的东西(虽然我也是做了这题才知道...),我这种蒟蒻肯定不能独立AC啦,于是愉快地看了题解。貌似和BZOJ3438是差不多的,所以搜这题的题解的时候可以搜BZOJ3438的题解。

2.总结了一下前人经验发现大致有两种构图方法。其中方法二貌似只有一个博客里看到,感觉比较厉害,而且比较好理解。。

共同点:对于冲突<x,y,z>,连边<x,y,z> <y,x,z> (格式为<点,点,容量>).

方法一:

先把所有的钱加起来减去最小割就是答案。 对于附加权,A类集合搞一个新的点P,从P向集合中的点连边,容量无穷大,从S向P连边容量为附加权.  B类集合同理,不过是从集合中的点连边到P,容量无穷大,从P到T连边容量为附加权。 对于每个点x,连边<S,x,A[i]> <x,T,B[i]>.

下面是本人YY的大致证明:其他的就不多说了,证明附加权的部分。

对于A类集合点P,如果边<S,P>被割掉了,那么必定有集合中的某个点x,<S,x>也被割掉了(反证:如果不成立,那么完全没必要割<S,P>),实际意义是集合中的元素不全是属于A类,所以扣掉代价,也就是这条边的容量。

对于B类集合点P,如果边<P,T>被割掉了,那么必定有集合中的某个点x,从S有路到x(反证:如果不成立,那么完全没必要割<P,T>),实际意义是集合中的元素不全是属于B类,所以扣掉代价,也就是这条边的容量。

方法二:

转化为最大权闭合图。假设所有点都被分到A类,所以把A[i]都加起来,还要加上A类集合的附加权.然后构造带权闭合图。一个点的点权为B[i]-A[i],实际意义是把它从A类变成B类的代价。 然后考虑附加权。  A类集合的附加权:搞一个新的点P,P的点权是附加权的相反数,从集合中的元素连边到P, 根据闭合图的定义,如果集合中的某个元素x选来了,也就是x变成了B类,那么P点也必须选来,所以就把相应的钱扣掉。 B类集合的附加权:搞一个新的点P,P的点权是附加权,从P连边到集合中的元素,表示如果要赚P的钱,必须把集合中的元素都变成B类。   然后就是最大权闭合图的做法了,具体不再赘述。

退役好久没做题,dinic的写不对了。。

Mike的农场 (BZOJ 4177)的更多相关文章

  1. bzoj 4177 Mike的农场

    bzoj 4177 Mike的农场 思维有些江化了,一上来就想费用流做法,但其实就是个最小割啊. 考虑先将所有的收益拿到,再减去不能拿的以及三元组 \((i,j,k)\) 产生的代价.即,先让 \(a ...

  2. BZOJ 4177: Mike的农场( 最小割 )

    显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...

  3. bzoj4177: Mike的农场

    类似于最大权闭合图的思想. #include<cstdio> #include<cstring> #include<iostream> #include<al ...

  4. 【BZOJ4177】Mike的农场 最小割

    [BZOJ4177]Mike的农场 Description Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中 ...

  5. 【bzoj4177】Mike的农场 网络流最小割

    题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...

  6. Mike的农场

    题目 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i]元, ...

  7. Mike的农场 BZOJ4177

    分析: 最小割,不选则割的建模题...(然而一开始我当成了费用流,简直丧心病狂...最后想到了最小割...) 对于条件一,直接建一条双向边就可以了,并且不计入sum中,因为这是作为费用的存在,让它跑出 ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

随机推荐

  1. LINQ to SQL:Where、Select/Distinct

    Where 操作 适用场景:实现过滤,查询等功能. 简单说明:与 SQL 命令中的 Where 作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的子句. Where 操作包括 3 ...

  2. SQL Server 利用批量(batchsize)提交加快数据生成/导入

    在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入. 此应用不光生成测试数据上,在BCP导入数据中,复制初始化 ...

  3. VS2010调试Qt5的相关设置

    1.windows环境,下载离线安装包安装: 2.安装Qt5 Visual Studio Add-in并安装: 3.环境变量里设置QTDIR=D:\LIB\Qt\Qt5.3.2\5.3\msvc201 ...

  4. MySQL中select * for update锁表的问题

    MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...

  5. Prince2的七大原则(7)

    [Prince2科普]Prince2的七大原则(7) 2016-12-12 光环组织级项目管理 按照惯例我们先来回顾一下,PRINCE2七大原则分别是指:持续的业务验证,经验学习,角色与责任,按阶段管 ...

  6. Android Layout XML属性

    转载自并做少量添加:http://www.cnblogs.com/playing/archive/2011/04/07/2008620.html Layout对于迅速的搭建界面和提高界面在不同分辨率的 ...

  7. 【转】Struts1.x系列教程(6):Bean标签库

    转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...

  8. CentOs 设置静态IP 方法

    在做项目时由于局域网采用自动获取IP的方式,导到每次服务器重启主机IP都会变化. 为了解决这个问题,需要设置静态IP. 1.修改网卡配置 编辑:vi /etc/sysconfig/network-sc ...

  9. [HIHO1079]离散化(线段树、染色)

    题目链接:http://hihocoder.com/problemset/problem/1079 MD坑爹,线段查询的时候左闭右开.插完挨个点找一遍扔set里,注意没染色的情况. #include ...

  10. 系统收到了多个不同的 Content-Disposition 标头。为了避免遭到 HTTP 响应拆分攻击,这种情况是不允许的。

    今天使用Struts2进行上传下载的时候发现了一个现象 我的Struts2配置文件 <action name="share_ExportExcel" class=" ...