Mike的农场 (BZOJ 4177)
题目大意:
给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)的更多相关文章
- bzoj 4177 Mike的农场
bzoj 4177 Mike的农场 思维有些江化了,一上来就想费用流做法,但其实就是个最小割啊. 考虑先将所有的收益拿到,再减去不能拿的以及三元组 \((i,j,k)\) 产生的代价.即,先让 \(a ...
- BZOJ 4177: Mike的农场( 最小割 )
显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...
- bzoj4177: Mike的农场
类似于最大权闭合图的思想. #include<cstdio> #include<cstring> #include<iostream> #include<al ...
- 【BZOJ4177】Mike的农场 最小割
[BZOJ4177]Mike的农场 Description Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中 ...
- 【bzoj4177】Mike的农场 网络流最小割
题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...
- Mike的农场
题目 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i]元, ...
- Mike的农场 BZOJ4177
分析: 最小割,不选则割的建模题...(然而一开始我当成了费用流,简直丧心病狂...最后想到了最小割...) 对于条件一,直接建一条双向边就可以了,并且不计入sum中,因为这是作为费用的存在,让它跑出 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- OI 刷题记录——每周更新
每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...
随机推荐
- 【final】站立会议---11.27
名称:nice! 组长:李权 成员:于淼 刘芳芳韩媛媛 宫丽君 时间:11月27日 13:00 项目内容:约跑app(约吧) 地点:传媒西楼220室 内容: 新任务的分配 1.李权分配任务 2.韩媛 ...
- 在linux中的info手册的用法
就是一些快捷键 空格键向下翻页,当处在当前节点的底部时,空格键跳转到下一个节点. <DEL> 或者 <BACKSPACE> 向上翻页,当处在当前节点的顶部的时候,这两个键可以跳 ...
- python核心编程学习记录之文件和输入输出
- 基于webrtc的视频通话时webrtc的接口调用流程
场景: 1.A call B 2.B answer 3.A connected with B 共同的步骤: A 和 B 都需要初始化webrtc模块,创建peerconnectionfactory 步 ...
- c#链接数据库
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; usin ...
- 用unity3d+cardboard开发一个全景图片查看器
一.建立全景播放场景: 建立一个unity项目,并建立videoplay场景,在场景中拖入一个球体,将全景照片拉到球体上,自动形成material和texture. 二.创建一个新的表面着色器,并修改 ...
- Python3基础 not in列表名 判断一个元素是否不在列表中列表中
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- 《点石成金:访客至上的Web和可用性设计秘笈(原书第3版)》--- 读书笔记
这是一本绝妙的书, 它的英语书名是“Don't make me think”.更确切的说是个小册子, 但是作者的语言实在是让人忍俊不禁. 真TM的有趣, 为毛外国人就能写出如此美妙的书? 而国人却不能 ...
- WCF 4.0 进阶系列 -- 随笔汇总
WCF4.0 进阶系列–前言 WCF4.0 进阶系列--第一章 WCF简介 WCF4.0进阶系列--第二章 寄宿WCF服务 WCF4.0进阶系列--第三章 构建健壮的程序和服务 WCF4.0进阶系列- ...
- 深入浅出设计模式——模板方法模式(Template Method Pattern)
模式动机 模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一.在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中.在模板方法模式 ...