限制这么多 肯定是网络流

考虑连边

首先我们计算出每行最多放的棋子数$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的更多相关文章

  1. Bzoj2673 3961: [WF2011]Chips Challenge 费用流

    国际惯例题面:如果我们枚举放几个零件的话,第二个限制很容易解决,但是第一个怎么办?(好的,这么建图不可做)考虑我们枚举每行每列最多放几个零件t,然后计算零件总数sum.这样如果可行的话,则有t*B&l ...

  2. BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流

    https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...

  3. [基本操作] Mobius 反演, Dirichlet 卷积和杜教筛

    Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $ ...

随机推荐

  1. Java Jsoup Spider抓取数据入库

    这里从车商网上进行数据抓取,请保持良好的职业道德不要将数据用于商业途径.工信部官网有汽车方面的公告目录,那里有最全的pdf或word数据,鉴于word和pdf解析的繁琐和耗时,我暂时用这个网站的数据进 ...

  2. 利用DataSet部分功能实现网站登录

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. ORCAD中的一些操作小技巧

    1.ORCAD中改变元器件和文本字体颜色的命令: 打开在 View -> Toolbar -> Command Window.然后圈选文字(可复选),然后到 Command Window ...

  4. Codeforces 223C Partial Sums 数论+组合数学

    题意非常easy,求不是那么好求的,k非常大 要操作非常多次,所以不可能直接来的.印象中解决操作比較多无非线段树 循环节 矩阵 组合数等等吧,这道题目 也就仅仅能多画画什么 的了 就以第一个案例为主吧 ...

  5. java.util.Date和java.sql.Date之间的转换

    java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它 们都有getTime方法返回毫秒数,自然就可以直接构建. ...

  6. 禁用android studio自身的ndk编译disable automatic ndk-build call

    1,让studio不自动编译jni文件,而是我们手动通过ndk-build编译    打开工程下面的app文件夹, 找到build.gradle   添加如下:  defaultConfig {   ...

  7. jvmtop 监控

    1 jar包 <!-- -JVMTOP监控- --> <dependency> <groupId>joda-time</groupId> <art ...

  8. 具体解释TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)

    转载请附本文的链接地址:http://blog.csdn.net/sahadev_/article/details/50780825 ,谢谢. tcp/ip技术经常会在我们面试的时候出现,非常多公司也 ...

  9. C++钩子程序浅析

    在网上搜索“键盘记录C++”实现可以找到很多相关文章,我也是照着上面的介绍去研究去试着做的,从懂到不懂.那么为什么有那么多材料我还要去写这样一篇 文章,我想这个是我个人需要关心的问题,我不是那种ctr ...

  10. TP框架---thinkphp基础知识

    php框架    发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...