zoukankan      html  css  js  c++  java
  • BZOJ 2039 人员雇佣 二元关系 最小割

    题面太长了,请各位自行品尝—>人员雇佣

    分析:

      借用题解的描述:

     a.选择每个人有一个代价Ai

     b.如果有两个人同时选择就可以获得收益Ei,j

     c.如果一个人选择另一个不选会产生代价Ei,j

      这是一道模型题(不是模板题是模型题)我们要记住这种建模。

      之前说过,最小割问题关键在于“舍弃”,所以说我们这个也是,要么舍弃Eij,要么舍弃Ai,Aj,要么舍弃完某个A还得付出Eij的代价。

      这里直接给出建图方法。

      首先,我们从原点向每个人i连边,容量为Σ(Eij)(1<=j<=n),表示选这个人最多带来的价值。

      然后,从每个人向T连容量为Ai的边,表示选这个人的代价。

      我们可以看到,现在我们的图是不对劲的,而且也不满足C条件,那么我们应该怎么动一下手脚呢?

      一个方法是,如果选了i不选j有Eij的代价,那么我们从i向j连接一条容量为2*Eij的边。这样的话如果我们选择了i而特别不想选j那么这条边也会被割掉,虽然在i的贡献中我们曾把Eij加入贡献,但这里减掉了,而且减掉了两次,即付出了相应的代价。

      至此,我们用总价值减去最小割,就是最终的答案。

    代码:

      这道题我乱调了调在BZOJ上过了,但在洛谷上说什么也过不去……代码就不发了。

  • 相关阅读:
    CSRF攻击与防御
    nmap报错: Failed to open device ethxxx
    谷歌黑客语法(google hacking)让你的搜索更精准有效
    查看CPU相关信息
    使用fiddler抓取jmeter发送的请求
    20191129字符串对齐方法
    20191126拼接字符串
    robotframework 模拟滚动鼠标到底部
    SQL中的左连接与右连接,内连接有什么区别
    robotframework 获取坐标
  • 原文地址:https://www.cnblogs.com/Alan-Luo/p/10252480.html
Copyright © 2011-2022 走看看