还是同一类最小割问题

对于只要记住,建图是来最小化损失,

最大化收益是所有收益-最小取不到的收益

首先对于每个经理i,如果不取,必然有signma(w[i,j])收益会得不到(这里我们先不考虑额外的损失);

如果取,必然会损失a[i](其实这个也不是收益,只是我们最后用sum-mincut时,sum不包括a[i],就相当于损失了);

下面考虑额外损失,对于i,j不在同一集合内(假设i被雇佣而j不被雇佣),会再损失2*w[i,j];

为什么是2倍呢,从建图来看,如果这样做最小割,雇佣i,不雇佣j,那么w[i,j]这个收益会被取到一次,而事实上不仅取不到还要额外损失,然后我们还要再减去一个经理之间的额外影响(由题意),所以是2倍;

然后分析完之后带入例子验证一下即可;

建图就不多说了

 const inf=;
type node=record
       next,flow,point:longint;
     end; var edge:array[..] of node;
    d,p,cur,pre,h,numh:array[..] of longint;
    t,len,n,m,i,j,x,s,ans:longint; function min(a,b:longint):longint;
  begin
    if a>b then exit(b) else exit(a);
  end; procedure add(x,y,f:longint);
  begin
    inc(len);
    edge[len].point:=y;
    edge[len].flow:=f;
    edge[len].next:=p[x];
    p[x]:=len;
  end; function sap:longint;
  var neck,i,j,tmp,u,q:longint;
  begin
    numh[]:=t+;
    sap:=;
    neck:=inf;
    for i:= to t do
      cur[i]:=p[i];
    u:=;
    while h[]<t+ do
    begin
      d[u]:=neck;
      i:=cur[u];
      while i<>- do
      begin
        j:=edge[i].point;
        if (edge[i].flow>) and (h[u]=h[j]+) then
        begin
          cur[u]:=i;
          pre[j]:=u;
          neck:=min(neck,edge[i].flow);
          u:=j;
          if u=t then
          begin
            while u<> do
            begin
              u:=pre[u];
              j:=cur[u];
              dec(edge[j].flow,neck);
              inc(edge[j xor ].flow,neck);
            end;
            sap:=sap+neck;
            neck:=inf;
          end;
          break;
        end;
        i:=edge[i].next;
      end;
      if i=- then
      begin
        dec(numh[h[u]]);
        if numh[h[u]]= then exit;
        i:=p[u];
        tmp:=t;
        q:=-;
        while i<>- do
        begin
          j:=edge[i].point;
          if (edge[i].flow>) and (h[j]<tmp) then
          begin
            tmp:=h[j];
            q:=i;
          end;
          i:=edge[i].next;
        end;
        cur[u]:=q;
        h[u]:=tmp+;
        inc(numh[h[u]]);
        if u<> then
        begin
          u:=pre[u];
          neck:=d[u];
        end;
      end;
    end;
  end; begin
  len:=-;
  readln(n);
  fillchar(p,sizeof(p),);
  t:=n+;
  for i:= to n do
  begin
    read(x);
    add(i,t,x);
    add(t,i,);
  end;
  for i:= to n do
  begin
    s:=;
    for j:= to n do
    begin
      read(x);
      s:=s+x;
      if i<>j then
      begin
        add(i,j,x shl );
        add(j,i,);
      end;
    end;
    add(,i,s);
    add(i,,);
    ans:=ans+s;
  end;
  writeln(ans-sap);
end.

bzoj2039的更多相关文章

  1. 【BZOJ2039】[2009国家集训队]employ人员雇佣 最小割

    [BZOJ2039][2009国家集训队]employ人员雇佣 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献 ...

  2. BZOJ2039 [2009国家集训队]employ人员雇佣

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2039 鉴于一开始看题如果不仔细是看不懂题目的,还是说一下题目大意 [题目大意]:给定n个人 ...

  3. 【BZOJ2039】【2009国家集训队】人员雇佣 [最小割]

    人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description 作为一个富有经营头脑的富翁,小L决 ...

  4. bzoj2039: [2009国家集训队]employ人员雇佣(最小割)

    传送门 膜一下大佬->这里 不难看出这是一个最小割的模型(然而我看不出来) 我们从源点向每一个点连边,容量为他能带来的总收益(也就是他能对其他所有经理产生的贡献) 然后从每一个点向汇点连边,容量 ...

  5. [Bzoj2039]小Z的袜子 (莫队算法模板题)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 11866  Solved: 5318[Sub ...

  6. bzoj网络流

    近期看了一些bzoj的网络流,深感智商不够.不过对于网络流又有了进一步的理解. 还是mark一下吧. 献上几篇论文:1)<最小割模型在信息学竞赛中的应用> 2)<浅析一类最小割问题& ...

随机推荐

  1. ios专题 - 常用设计模式

    设计模式:解决编程问题的设计模板 设计模式是一个抽象工具,用于面向对象的软件开发,以及其他领域.它是一个设计模板,在特定背景中,解决一般性的.重复出 现的问题.因此,设计模式是一种针对特定的.具体的设 ...

  2. JavaScript基础-对象<1>

    1.JavaScript内部对象属性和方法 (1)内置String对象 String 对象是JavaScript的核心对象之一. 创建一个sting对象: var a="this defin ...

  3. AngularJS的学习网站及相关资源整理

    学习angularjs的网站及相关资源的整理,会不断更新. angularJs的官网:https://angularjs.org/       API文档:https://docs.angularjs ...

  4. 最近用到的Linux常用命令总结

    最近用到的Linux常用命令总结 - ls :显示当前目录文件信息 `ls -a -l` - cd :目录跳转 cd .. 上级目录 cd ~ home目录 cd - 最近目录 - cat :在屏幕上 ...

  5. echarts雷达图

    用echarts展现雷达图的定制 <!doctype html> <html> <head> <meta charset="utf-8"& ...

  6. html标签对应的英文原文

    标签 对应英文 说明 <!--> / 注释 <!DOCTYPE> document type 文档类型 <a> anchor 超链接 <abbr> ab ...

  7. 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹

    在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...

  8. 微调Win8.1这台电脑

    从前有个笑话:一位朋友在办公室受到领导教育:“我说小王同志啊,虽然这电脑是你打了报告组织上买给你用的,可是你也不好这么狂妄嘛...”可怜的他只好把图标的名字改为“大家的电脑”. 想必大家已经知道这个笑 ...

  9. 如何使用命令提示符进入mysql

    如果mysql安装时的路径不是在C盘,应进入mysql的bin目录中,然后在命令提示符中输入“mysql -u USERNAME -pPASSWORD ” 如果如果mysql安装时的路径是在C盘,直接 ...

  10. 大型B/S系统技术总结(不断更新)

    看了<淘宝技术这十年>和<大型网站系统与Java中间件实践>这些书,对大型B/S系统的构建越来越感兴趣,于是尝试收集和总结一些常用的技术手段.不过大型网站的架构是根据业务需求不 ...