题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2039

用最小割看。对于一组关系 i , j ,如果都选,收益 2*Ei,j,可以看作0,作为基准;如果一个选了一个没选,不仅没了 2*Ei,j,还会额外少E,所以是3*E;如果两个都没选,就是少了E;解一下的话, i 和 j 相互连边的容量是 2*E ;源点连来的容量是0,连向汇点的容量是E。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define ll long long
  5. using namespace std;
  6. const int N=,M=N*N<<;
  7. const ll INF=3e12;
  8. int n,hd[N],xnt=,cur[N],dfn[N];ll f[N];
  9. int to[M],nxt[M];ll cap[M];
  10. int q[N],he,tl;
  11. ll Mn(ll a,ll b){return a<b?a:b;}
  12. int rdn()
  13. {
  14. int ret=;bool fx=;char ch=getchar();
  15. while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
  16. while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
  17. return fx?ret:-ret;
  18. }
  19. void add(int x,int y,ll z)
  20. {
  21. to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;cap[xnt]=z;
  22. to[++xnt]=x;nxt[xnt]=hd[y];hd[y]=xnt;cap[xnt]=;
  23. }
  24. bool bfs()
  25. {
  26. memset(dfn,,sizeof dfn);dfn[]=;
  27. q[he=tl=]=;
  28. while(he<=tl)
  29. {
  30. int k=q[he++];
  31. for(int i=hd[k],v;i;i=nxt[i])
  32. if(!dfn[v=to[i]]&&cap[i])
  33. dfn[v]=dfn[k]+,q[++tl]=v;
  34. }
  35. return dfn[n+];
  36. }
  37. ll dinic(int cr,ll flow)
  38. {
  39. if(cr==n+)return flow;
  40. ll use=;
  41. for(int& i=cur[cr],v;i;i=nxt[i])
  42. if(dfn[v=to[i]]==dfn[cr]+&&cap[i])
  43. {
  44. ll tmp=dinic(v,Mn(flow-use,cap[i]));
  45. if(!tmp)dfn[v]=;
  46. use+=tmp;cap[i]-=tmp;cap[i^]+=tmp;
  47. if(use==flow)return use;
  48. }
  49. return use;
  50. }
  51. int main()
  52. {
  53. n=rdn();
  54. for(int i=,d;i<=n;i++)
  55. d=rdn(),add(,i,d);
  56. for(int i=,d;i<=n;i++)
  57. for(int j=;j<=n;j++)
  58. {
  59. d=rdn();if(i==j)continue;
  60. add(i,j,(ll)d<<1ll);f[i]+=d;
  61. }
  62. ll ans=;
  63. for(int i=;i<=n;i++)add(i,n+,f[i]),ans+=f[i];
  64. while(bfs())memcpy(cur,hd,sizeof hd),ans-=dinic(,INF);
  65. printf("%lld\n",ans);
  66. return ;
  67. }

bzoj 2039 [2009国家集训队]employ人员雇佣——二元关系的更多相关文章

  1. BZOJ 2039: [2009国家集训队]employ人员雇佣

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1369  Solved: 667[Submit ...

  2. BZOJ 2039 [2009国家集训队]employ人员雇佣 网络流

    链接 BZOJ 2039 题解 这题建图好神,自己瞎搞了半天,最后不得不求教了企鹅学长的博客,,,,发现建图太神了!! s向每个人连sum(e[i][x]) 的边,每个人向T连a[i]的边.两两人之间 ...

  3. bzoj 2039: [2009国家集训队]employ人员雇佣【最小割】

    一开始在https://www.cnblogs.com/lokiii/p/10770919.html基础上连(i,j,b[i][j])建了个极丑的图T掉了--把dinic换成isap勉强能卡过 首先因 ...

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

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1511  Solved: 728 Descri ...

  5. 2039: [2009国家集训队]employ人员雇佣

    任意门 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即 ...

  6. BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割

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

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

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

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

    http://www.lydsy.com/JudgeOnline/problem.php?id=2039 题意:中文题意. 思路:一开始想着和之前做的最大权闭合图有点像,但是如果把边全部当成点的话,那 ...

  9. BZOJ 2039 / Luogu P1791 [2009国家集训队]employ人员雇佣 (最小割)

    题面 BZOJ传送门 Luogu传送门 分析 考虑如何最小割建图,因为这仍然是二元关系,我们可以通过解方程来确定怎么建图,具体参考论文 <<浅析一类最小割问题 湖南师大附中 彭天翼> ...

随机推荐

  1. 1-27 sed基本编程和cut基本应用

    大纲: 一.sed基本编程 sed详解.Usage.操作实例 二.cut命令应用 cut命令详解.Usage.操作实例 ######################################## ...

  2. VMware虚拟机创建安装之后不出现VMnet1和VMnet8虚拟网卡

    大家可能遇到过安装虚拟机之后,不出现这两张虚拟网卡,造成一系列的网络问题 VMware虚拟机无法将网络改为桥接状态 本人亲试可行的解决办法 首先把你之前安装的VMware虚拟机卸载,清理得一干二净: ...

  3. day23 CMDB 深入讲解

    课前准备: https://www.getpostman.com/postman 内容: 1. cmdb资产自动更新2. api安全认证3. restfulAPI 4. 自定义用户认证 课堂笔记: 前 ...

  4. 006-对象—— static关键字 静态属性和方法的使用

    <?php /*static()静态属性: */ //静态属性: /*class Model{ private $mysqli; static $config;//数据库连接状态 functio ...

  5. 【2018 “百度之星”程序设计大赛 - 初赛(B)-1004】p1m2(迷之二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6383 题目就是让你求一个整数数组,在进行任意元素 + 1. - 2 操作后,请问在所有可能达到的稳定数 ...

  6. TStringHelper.Split

    作为对泛型的支持,TStringHelper.Split方法理所应当地出现了. 示例代码1: var  iText: string;  iAStr: TArray<string>;  I: ...

  7. FusionCharts制作实时刷新图

    转自:http://yklovejava-163-com.iteye.com/blog/1889949 下面介绍的是用FusionCharts制作实时刷新图的过程(FusionCharts确实太好用了 ...

  8. jquery过滤特殊字符及js字符串转为数字

    //替换特殊字符 $(this).val($(this).val().replace(/[~'!<>@#$%^&*()-+_=:]/g, "")); 方法主要有 ...

  9. 【PL/SQL编程】数据类型说明

    1. 数值类型 数值类型主要包括NUMBER.PLS_INTEGER.和BINARY_INTEGER 3种基本类型.NUMBER可以用来存储整数或浮点数,PLS_INTEGER和BINARY_INTE ...

  10. Recording︱有价值的各类AI、机器学习比赛心得、经验抄录

    今年kaggle华人优胜团队很多,所以经验.心得不少,都是干货慢慢收集. 一.[干货]Kaggle 数据挖掘比赛经验分享 github:https://github.com/ChenglongChen ...