OvO http://codeforces.com/contest/839/problem/E

  (Codeforces Round #428 (Div. 2) - E)

  首先,k肯定是要平均分给这图中的一个最大团,

  粗略的证明如下

  

  然后,可以通过BronKerbosch算法求极大团,然后从极大团中找出最大的团,就是最大团,

  All表示当前团中元素的集合,Some表示候选元素的集合(Some中任意元素都与All中所有元素有边),None元素表示已选的元素的集合(None中任意元素与All中的所有元素都有边)(None是用于去重的),

  当Some和None都为空的时候,All就是一个极大团。

  u节点用于优化。

  具体实现在代码中,这算法贼简洁。

  (思路来源于瞟了一眼某大佬的代码)

  

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <vector> using namespace std; const int N=55;
const int M=11111; struct node{
int u,v;
int next;
}edge[N*N]; int n,k,num;
int head[N];
int g[N][N];
int mx;
int All[M][N],Some[M][N],None[M][N]; void addedge(int u,int v)
{
edge[num].u=u;
edge[num].v=v;
edge[num].next=head[u];
head[u]=num++;
} void init()
{
mx=0;
num=0;
memset (head,-1,sizeof(head));
memset(g,0,sizeof(g));
} void BronKerbosch(int id,int lenAll,int lenSome,int lenNone)
{
// cout<<"id: "<<id<<" lenAll: "<<lenAll<<" lenSome: "<<lenSome<<" lenNone: "<<lenNone<<endl;
if(lenSome==0 && lenNone==0)
{
if(lenAll>mx)
mx=lenAll;
return ;
}
if(lenSome==0)
return ;
int i,j,u,v,tid,tlenAll,tlenSome,tlenNone;
u=Some[id][1]; tid=id+1;
for(i=1;i<=lenSome;i++)
{
v=Some[id][i];
if(g[u][v]) continue;
tlenAll=lenAll+1;
for(j=1;j<=lenAll;j++)
All[tid][j]=All[id][j];
All[tid][tlenAll]=v;
tlenSome=0;
for(j=1;j<=lenSome;j++)
if(g[v][Some[id][j]])
Some[tid][++tlenSome]=Some[id][j];
tlenNone=0;
for(j=1;j<=lenNone;j++)
if(g[v][None[id][j]])
None[tid][++tlenNone]=None[id][j];
BronKerbosch(tid,tlenAll,tlenSome,tlenNone);
}
} void solve()
{
int i,j;
for(i=1;i<=n;i++)
Some[0][i]=i;
BronKerbosch(0,0,n,0);
} int main()
{
int i,j;
init();
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&g[i][j]);
if(g[i][j]==1)
addedge(i,j);
}
solve();
double ans=1.0*(mx-1)*mx/2*(1.0*k/mx)*(1.0*k/mx);
printf("%.10lf\n",ans);
return 0;
}

  

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(极大团)

    [题目链接] http://codeforces.com/contest/839/problem/E [题目大意] 现在有一些点,现在你有k的液体,随意分配给这些点, 当两个点有边相连的时候,他们能产 ...

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

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

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

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

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

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

  6. Codeforces Round #428 (Div. 2) 题解

    题目链接:http://codeforces.com/contest/839 A. Arya and Bran 题意:每天给你一点糖果,如果大于8个,就只能给8个,剩下的可以存起来,小于8个就可以全部 ...

  7. TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E

    传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...

  8. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  9. 长春理工大学第十四届程序设计竞赛(重现赛)M.Orx Zone

    链接:https://ac.nowcoder.com/acm/contest/912/M 题意: Daenerys Stormborn, 风暴中出生的丹尼莉丝,the Unburnt, 烧不死的,Qu ...

随机推荐

  1. centos git clone 报错 fatal: HTTP request failed 解决办法

    git clone报错提示 git clone https://github.com/xxxx.git Initialized empty Git repository in /root/xxxx/. ...

  2. 前端 CSS 2

    无序列表去除自带的样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. go 表单

    package main import ( "fmt" "io" "net/http" ) const form = `<html&g ...

  4. 关闭钩子(shutdown hook)的作用以及在Tomcat中的使用

    在很多实际应用环境中,当用户关了应用程序时,需要做一些善后清理工作,但问题是,用户有时并不会按照推荐的方法关闭应用程序,很有可能不做清理工作,例如在Tomcat的部署应用中,通过实例化一个Server ...

  5. 题解luoguP2054 BZOJ1965【[AHOI2005]洗牌】

    题目链接: https://www.luogu.org/problemnew/show/P2054 https://www.lydsy.com/JudgeOnline/problem.php?id=1 ...

  6. 如果您的浏览器不支持javascript功能

    如果您的浏览器不支持javascript功能或被禁止使用,那么在访问许多网站(包括此网站)时,某些功能将不可用.我们建议您打开javascript功能以获得最佳的浏览效果.以下是打开它的可能原因和方法 ...

  7. array数据处理

    之前写过map,forEach,现在用到every和some,记录一下当作学习笔记,方便以后翻阅. forEach是没有返回值的,对原数组进行修改: // forEach没有返回值,只针对每个元素调用 ...

  8. CSS 使用calc()获取当前可视屏幕高度

    来自:https://blog.csdn.net/qq_32063079/article/details/89766442 先了解一下CSS3的相对长度单位(参考详细教程) : 相对长度单位指定了一个 ...

  9. jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍Eas ...

  10. Flink接收RabbitMQ数据写入到Oracle

    文件内容 项目案例: https://github.com/TaoPanfeng/case/tree/master/03-flink/flink-rabbitmq-oracle FlinkMain.j ...