【题目链接】 http://codeforces.com/contest/839/problem/E

【题目大意】

  现在有一些点,现在你有k的液体,随意分配给这些点,
  当两个点有边相连的时候,他们能产生分配的液体乘积之和的价值,问最大价值

【题解】

  考虑相同液体分给两个相连的点的时候,根据不等式x+y<=2sqrt(xy)的取等条件,
  一定是平均分的时候价值最大,考虑多个相连,完全图的时候产生价值更大,
  因此答案一定是一个极大团,记团大小为ans,Ans=ans*(ans-1)/2*sqr(k/ans)
  答案取决于(ans-1)/ans的大小,根据盐水加盐性质,答案正比于ans的大小,
  所以求最大的极大团,也就是最大团用来计算答案是最优的。

【代码】

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4. using namespace std;
  5. namespace BronKerbosch{
  6. const int N=200;
  7. int G[N][N],Allow[N][N],Forbid[N][N],Num[N][N],Ans;
  8. void Initialize(int n){
  9. Ans=0;
  10. for(int i=1;i<=n;i++)Allow[1][i]=i;
  11. memset(G,0,sizeof(G));
  12. }
  13. void Add_Edge(int x,int y){G[x][y]=G[y][x]=1;}
  14. void Dfs(int x,int Nn,int An,int Fn){
  15. if(!An&&!Fn){Ans=max(Ans,Nn);return;}
  16. if(!An)return;
  17. int key=Allow[x][1];
  18. for(int j=1;j<=An;j++){
  19. int v=Allow[x][j],tAn=0,tFn=0;
  20. if(G[key][v])continue;
  21. for(int i=1;i<=Nn;i++)Num[x+1][i]=Num[x][1]; Num[x+1][Nn+1]=v;
  22. for(int i=1;i<=An;i++)if(G[v][Allow[x][i]])Allow[x+1][++tAn]=Allow[x][i];
  23. for(int i=1;i<=Fn;i++)if(G[v][Forbid[x][i]])Forbid[x+1][++tFn]=Forbid[x][i];
  24. Dfs(x+1,Nn+1,tAn,tFn);
  25. Allow[x][j]=0; Forbid[x][++Fn]=v;
  26. }
  27. }
  28. }
  29. int n,K,x,y;
  30. int main(){
  31. while(~scanf("%d%d",&n,&K)){
  32. using namespace BronKerbosch;
  33. Initialize(n);
  34. for(int i=1;i<=n;i++){
  35. for(int j=1;j<=n;j++){
  36. scanf("%d",&x);
  37. if(x&&i!=j)Add_Edge(i,j);
  38. }
  39. }Dfs(1,0,n,0);
  40. double res=0;
  41. if(Ans>1)res=1.0*(Ans-1)/2.0/Ans;
  42. printf("%.10f\n",res*K*K);
  43. }return 0;
  44. }

Codeforces 839E Mother of Dragons(极大团)的更多相关文章

  1. Codeforces 839E Mother of Dragons【__builtin_popcount()的使用】

    E. Mother of Dragons time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...

  2. Codeforces 839E Mother of Dragons

    题 OvO http://codeforces.com/contest/839/problem/E (Codeforces Round #428 (Div. 2) - E) 解 首先,k肯定是要平均分 ...

  3. CF839E Mother of Dragons 最大团 Bron-Kerbosch算法

    题意简述 给你一个\(n\)个节点的无向图\(G=\{V,E\}\)的邻接矩阵\(g\)和每个点的点权为\(s_i\),且\(\sum_{i=1}^n s_i = K\),要你求出\(\mathrm{ ...

  4. 【CF839E】Mother of Dragons 折半状压

    [CF839E]Mother of Dragons 题意:给你一张n个点,m条边的无向图.你有k点能量,你可以把能量分配到任意一些点上,每个点分到的能量可以是一个非负实数.定义总能量为:对于所有边&l ...

  5. POJ 2989 All Friends 极大团计数

    POJ 2989 题意:给定一个无向图(节点数小于128)求极大团(不包含在更大的团中)的总数. 对最大团,极大团不熟悉的,建议先阅读最大团搜索问题 ZOJ 1492 再来看本题. 本题数据有限,可以 ...

  6. All Friends 极大团

    搞懂了什么是团  什么是极大团  什么是最大团 极大团就是  不是任何团的真子集  最大团就是点数最多的极大团 这题就是求极大团的个数 用bk算法 #include <iostream> ...

  7. hdoj1373 Channel Allocation(极大团)

    题意是有若干个接收器,给出每个接收器的相邻接收器.相邻的接收器不能使用同一信号频道.问所需要的信号频道数. 求该无向图的极大团. #include<iostream> #include&l ...

  8. Codeforces Round #428 (Div. 2)E. Mother of Dragons

    http://codeforces.com/contest/839/problem/E 最大团裸题= =,用Bron–Kerbosch算法,复杂度大多博客上没有,维基上查了查大约是O(3n/3) 最大 ...

  9. codeforces527D

    Clique Problem CodeForces - 527D 所谓图的极大团是指在一个无向图中找到最多的点,使得这些点构成的图(即导出子图)是一个完全图,然而这个问题至今没有有效的多项式解法,当然 ...

随机推荐

  1. HDU 1034 Candy Sharing Game (模拟)

    题目链接 Problem Description A number of students sit in a circle facing their teacher in the center. Ea ...

  2. JSTL标签库笔记

    1. 概述 JSTL(Jsp Standard Tag Library)即JSP标准标签库,只能运行在支持JSP1.2↑和Servlet2.3↑规范的容器上. 通常情况下我们在编写JSP页面的时候,在 ...

  3. 41、用Python实现一个二分查找的函数

    data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35] def binary_search(dataset ...

  4. 33、re的match和search区别?

    1.match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配:2.也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功 ...

  5. 37 - 网络编程-UDP编程

    目录 1 UDP协议 2 UDP通信流程 3 UDP编程 3.1 构建服务端 3.3 常用方法 4 聊天室 5 UDP协议应用 1 UDP协议 UDP是面向无连接的协议,使用UDP协议时,不需要建立连 ...

  6. WebClient vs HttpClient vs HttpWebRequest

    转载:http://www.diogonunes.com/blog/webclient-vs-httpclient-vs-httpwebrequest/ Just when I was startin ...

  7. Java Web 远程调试

    Java Web 远程 调试 Tomcat 下载压缩版服务器 环境:Tomcat.Eclipse,做远程调试我们并不需要其他特殊插件 1.配置Tomcat/bin/startup.bat 在前面增加代 ...

  8. 当while read line 遇到 ssh

    问题:while read line 中使用ssh只能读取一行? #!/bin/sh while read line do echo $line ssh root@$line "echo 1 ...

  9. mysql 创建,授权,删除 用户

    1.创建用户 创建一个用户名是 lefunyun 密码是 X5A4FU8I0lKM21YPYUzP 账号 CREATE USER lefuyun@localhost IDENTIFIED BY 'X5 ...

  10. IT行业经典面试技巧及方法思路。

    问题1:为什么从上家公司离职?”能说说原因吗? 首先,作为一个从事招聘的HR,并不认为追问面试者为什么从上一家公司离职是个明智的做法起码不应该在面试一开始就抛出这个问题,一个较为明显的原因是因为这会引 ...