bzoj2673
限制这么多 肯定是网络流
考虑连边
首先我们计算出每行最多放的棋子数$sx[i]$,每列最多放的棋子数$sy[i]$
首先由源点向第$i$行连流量为$sx[i]$费用为$0$的边,第$i$列向汇点连流量为$sy[i]$费用为$0$的边,这个是套路
第一个限制很好解决,采用正难则反思想,考虑能“拆下”多少绿色信号灯,第$i$行向第$i$列连一条流量为他们最大可以拆下信号灯数量费用为$0$的边就可以了
我们考虑第二个限制
显然直接建边不是很可做
我们考虑枚举
如果枚举总流量的话,第一个限制中连的边的流量不好确定
我们考虑枚举每行每列最大的零件数量,记为$x$
这样每行向每列连流量为$x$的边就可以了
然后我们考虑绿色信号灯如何“拆除”
然后就会发现我们之前连的边...费用都是$0$
如果矩阵中某个点$(i,j)$是$.$的话
我们由第$i$行向第$j$列连流量为$1$,费用为$1$的边
然后跑最小费用最大流
这个费用流要注意,流量一定要等于所有可以安装的信号灯的数量
因为一个合法的流要么是经过“不拆除”的$i->i$费用为$0$的边
要么是经过拆除边
不可能出现“行上拆掉了列上没拆掉”的情况
最后用合法最大流流量 - 费用就是一组解
根据条件2判断是否可行即可
注意:请使用高效的费用流算法
Edmond-Karp算法可能会被某无良出题人造的毒瘤数据卡掉
建议使用zkw费用流,稠密图和二分图跑的飞快
这题建出来的图是一个二分图,所以你懂得
bzoj2673的更多相关文章
- Bzoj2673 3961: [WF2011]Chips Challenge 费用流
国际惯例题面:如果我们枚举放几个零件的话,第二个限制很容易解决,但是第一个怎么办?(好的,这么建图不可做)考虑我们枚举每行每列最多放几个零件t,然后计算零件总数sum.这样如果可行的话,则有t*B&l ...
- BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流
https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...
- [基本操作] Mobius 反演, Dirichlet 卷积和杜教筛
Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $ ...
随机推荐
- ThinkPHP中的模型命名
当我们创建一个UserModel类的时候,其实已经遵循了系统的约定.ThinkPHP要求数据库的表名和模型类的命名遵循一定的规范,首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的 ...
- 笔记本WIFI卡简介
1.Intel AC9560(CNVI) AC9260(pcie) 3165D2W(pcie) 2.Realtek瑞昱 RTL8822be(pcie) RTL8723BU(USB) 英特尔在300系主 ...
- PHP session回收机制(转)
由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效.当一个有效请求发生时,PHP会根据全局变量 session.gc_probability/sessi ...
- Linux相互排斥与同步应用(三):posix线程实现单个生产者和单个消费者模型
[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu.文章仅供学习交流,请勿用于商业用途] 在第一节说到了 ...
- hadoop权威指南学习
通常情况下,处理少量的大型文件更容易.更有效,为什么呢? map阶段中的键如果不需要可以忽略掉? MapReduce过程也可以用于本地文件的处理,但是如果是要使用到集群的话还需要HDFS. Data ...
- HDFS源码分析心跳汇报之数据块增量汇报
在<HDFS源码分析心跳汇报之BPServiceActor工作线程运行流程>一文中,我们详细了解了数据节点DataNode周期性发送心跳给名字节点NameNode的BPServiceAct ...
- MySQL的几种登陆方式
MySQL的几种登陆方式 登录方式一: [root@001 tmp]# mysql -h 127.0.0.1 -u root -p 这是最标准的登录方式,意指通过tTCP/IP协议进行连接,因为 ...
- [转]浅谈Flash Socket通信安全沙箱
用过Flash socket的同学都知道,Flash socket通讯有安全沙箱问题.就是在Flash Player发起socket通信时,会向服务端获取安全策略,如果得不到服务端响应,flash将无 ...
- HDU 6208 The Dominator of Strings 后缀自动机
The Dominator of Strings Time Limit: 3000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java ...
- MongoDB的CRUD操作(java Util )
1.保存插入操作: public static synchronized String insert(DBObject record) { DBCollection col = MongoDB.get ...