[POJ 3155] Hard Life

描述

?id=3155

一个公司内部共n个员工,员工之间可能曾经因为小事有了过节,总是闹矛盾。若员工u和员工v有矛盾,用边(u, v)表示,共m个矛盾。最近,公司内部越来越不团结,要裁员。想得到一个被裁人员的清单,使得被裁人员间的不团结率最高。不团结率定义为被裁人员间的矛盾总数与被裁人员数的比值(不团结率= 被裁人员之间的矛盾总数/ 被裁人员数)。

题解:

如果把一个矛盾定义为一条边,一位员工定义为一个点,那么这里的不团结率就对应着一个图的密度:图的一个子图中边数与点数的比值。不团结率最大就对应着密度最大。本题就要求求出图的最大密度子图。

·简单分析:求最大密度子图的方法就是用最大闭合子图。将每个点和每个边都看成一个结点来处理。可知:如果选择一个边(u,v),那么必须选择两个点u、v,这就符合了最大闭合子图的约束条件。然后二分答案g,只要边数 / 点数 ≥ g,就证明还有更大的密度可以取到。

·思路:关键是判断下面的条件如何判断成立:

这样就很清晰了,,将每个边设为一个点权为1的结点,每个点设为一个点权为-g的结点。求最大闭合子图,如果权值大于g,就说明还有更大密度的存在。

建模:建立附加源s和附加汇t,将每条边作为一个结点ei,和他相邻的点分别是结点ui、vi。从s向每个ei连一条容量为1的边。从每个ui、vi向t连一条容量为g的边。从每个ei向相邻ui、vi连一条容量为INF的边。

实现:统计边数Total,二分答案g,每次都要重新建图求解最大流Maxflow。如果在某一g处刚好有此时的

击败不等于击倒,跌倒了,爬起来,想一想,为什么跌倒了,

[POJ 3155] Hard Life

相关文章:

  • 【算法】直接插入排序C语言实现
  • 嵌入式 FAAC1.28 在海思HI3518C/HI3518A平台linux中的编译优化
  • Android 动画animation 深入分析
  • Mybatis极其(最)简(好)单(用)的一个分页插件
  • Ext JS Kitchen Sink [Learning by doing](2)ArrayGrid
  • 你感兴趣的文章:

    标签云:

    亚洲高清电影在线, 免费高清电影, 八戒影院夜间, 八戒电影最新大片, 出轨在线电影, 午夜电影院, 在线影院a1166, 在线电影院, 在线观看美剧下载, 日本爱情电影, 日韩高清电影在线, 电影天堂网, 直播盒子app, 聚合直播, 高清美剧, 高清美剧在线观看 EhViewer-E站, E站, E站绿色版, qqmulu.com, qq目录网, qq网站目录,