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$ 可简写为 $ ...
随机推荐
- Java Jsoup Spider抓取数据入库
这里从车商网上进行数据抓取,请保持良好的职业道德不要将数据用于商业途径.工信部官网有汽车方面的公告目录,那里有最全的pdf或word数据,鉴于word和pdf解析的繁琐和耗时,我暂时用这个网站的数据进 ...
- 利用DataSet部分功能实现网站登录
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- ORCAD中的一些操作小技巧
1.ORCAD中改变元器件和文本字体颜色的命令: 打开在 View -> Toolbar -> Command Window.然后圈选文字(可复选),然后到 Command Window ...
- Codeforces 223C Partial Sums 数论+组合数学
题意非常easy,求不是那么好求的,k非常大 要操作非常多次,所以不可能直接来的.印象中解决操作比較多无非线段树 循环节 矩阵 组合数等等吧,这道题目 也就仅仅能多画画什么 的了 就以第一个案例为主吧 ...
- java.util.Date和java.sql.Date之间的转换
java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它 们都有getTime方法返回毫秒数,自然就可以直接构建. ...
- 禁用android studio自身的ndk编译disable automatic ndk-build call
1,让studio不自动编译jni文件,而是我们手动通过ndk-build编译 打开工程下面的app文件夹, 找到build.gradle 添加如下: defaultConfig { ...
- jvmtop 监控
1 jar包 <!-- -JVMTOP监控- --> <dependency> <groupId>joda-time</groupId> <art ...
- 具体解释TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)
转载请附本文的链接地址:http://blog.csdn.net/sahadev_/article/details/50780825 ,谢谢. tcp/ip技术经常会在我们面试的时候出现,非常多公司也 ...
- C++钩子程序浅析
在网上搜索“键盘记录C++”实现可以找到很多相关文章,我也是照着上面的介绍去研究去试着做的,从懂到不懂.那么为什么有那么多材料我还要去写这样一篇 文章,我想这个是我个人需要关心的问题,我不是那种ctr ...
- TP框架---thinkphp基础知识
php框架 发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...