给出一个图,求图中的最大团,n = 40,应该怎么求呢?

我们可以使用中途相遇法,将原有的40个点分为两部分,每部分各20个点。在此之后,我们可以先对前20个点求出暴力求出所有团。设dp[mask]表示当前选择点的状态为mask(状态压缩)时的最大团数量。则在求整体最大团时,若得到后20个点中的当前团为p,找到在前二十个点中所有与p中所有点都有边的点集q,则maxc = max(maxc, dp[q] + p)。这样,我们就可以求出最大团的大小。

另见:http://blog.csdn.net/mosquito_zm/article/details/77170715

cf 题解版:We can find the maximal clique by the "meet in the middle" approach. Divide the vertices of the graph into 2 sets with equal number of vertices in each set(if n is odd, one set will have a vertex more than the other). We can save the maximal clique for each subset of the first set in dp[mask]. Now ,for each clique C in the second set, let v1, ... , vt be vertices in the first set that are connected to all of the vertices of C. Then m = max(m, dp[mask(v1, ... , vt)] + sizeof(C)) (m is size of maximum clique). Note : finding the maximal clique is also possible by a wise brute forces.

cf题目代码如下:

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 40;
const int C = 20;
int dp[1 << C];
ll adj[maxn];
int n,m,k,x;
int maxc(){for(int i = 0;i < n;i++){for(int j = 0;j < n;j++){scanf("%d",&x);adj[i] |= (ll)(i == j || x) << j;}}for(int i = 1;i < (1 << max(0,n - C));i++){int x = i;for(int j = 0;j < C;j++)if((i >> j) & 1)x &= adj[j + C] >> C;if(x == i) dp[i] = __builtin_popcount(i);}for(int i = 1;i < (1 << max(0,n - C));i++)for(int j = 0;j < C;j++)if((i >> j) & 1)dp[i] = max(dp[i], dp[i ^ (1 << j)]);int ans = 0;for(int i = 0;i < (1 << min(C,n));i++){int x = i,y = (1 << max(0, n - C)) - 1;for(int j = 0;j < min(C,n);j++)if((i >> j) & 1) x &= adj[j] & ((1 << C) - 1),y &= adj[j] >> C;if(x != i) continue;ans = max(ans, __builtin_popcount(i) + dp[y]);}return ans;
}
int main()
{scanf("%d",&n);scanf("%d",&k);int tmp = maxc();long double x = (long double) k / tmp;ll ans = tmp * (tmp - 1) / 2;cout << fixed << setprecision(8) << x * x * ans << '\n';return 0;
}

求一个图中的最大团(全连通分量) n = 40 (中途相遇法)相关推荐

  1. 求一个字符串中连续出现的次数最多的子串

    求一个字符串中连续出现的次数最多的子串.例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复 ...

  2. 求一个字符串中连续出现次数最多的子串

    http://blog.csdn.net/imcdragon/article/details/6838565解答二 http://hi.baidu.com/icyday315/item/040aada ...

  3. (HDU4324)判断一个图中是否存在两点的出度相同

    题目:Triangle LOVE 因为每两个点一定有且仅有一条指向边,那么先假定点按顺序1,2,....n,每个点一定指向后面的点,即1指向2,3,4.....n,2指向3,4,5....n..... ...

  4. 求一个序列中最大的子序列_最大的斐波那契子序列

    求一个序列中最大的子序列 Problem statement: 问题陈述: Given an array with positive number the task to find the large ...

  5. 【字符串问题】求一个字符串中重复出现的最长的子串

    2013-09-14 15:34:16 用后缀数组求一个字符串中重复出现的最长的子串. 用C++中的string类可以很方便地进行操作,需将后缀数组保存在vector<string>,如下 ...

  6. 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)

    一,题目: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是: 4 5 5 3 要求:(1)写出算法;(2)分析时间复杂度;(3) ...

  7. MATLAB二值图求figure图中任意图形面积

    MATLAB二值图求figure图中任意图形面积 问题描述 思路 代码 效果 问题描述 MATLAB的figure图遇到曲线是由离散点组成,没有解析表达式.想求曲线包围面积时无法直接编程求解.如下图 ...

  8. 算法12--topK求一个数组中第k大的数

    求一个数组中第k大的值 解法一: 建立一个k个元素的最大堆,首先将数组中前k个元素放入堆中,此时堆顶元素为第k大的元素,后面继续遍历数组,比较堆顶元素与数组中元素值,当数组中元素小于堆顶元素时,将堆顶 ...

  9. java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...

    参考博客: https://blog.csdn.net/jinzk123/article/details/52231527 https://blog.csdn.net/qq_40998706/arti ...

  10. 下图所示的PCB(进程控制块)的组织方式是(),图中()。【最全!最详细分析】

    下图所示的PCB(进程控制块)的组织方式是(),图中(). A.链接方式 B.索引方式 C.顺序方式 D.Hash A.有1个运行进程.2个就绪进程.4个阻塞进程 B.有2个运行进程.3个就绪进程.2 ...

最新文章

  1. 小型工作室创业项目_为什么新开发人员应该在小型创业公司工作
  2. 添物 不花钱学计算机及编程(预备篇)— 编译原理
  3. webdriver(python)学习笔记一
  4. Android 环境搭建的错误解决方案
  5. 在eclipse中使用svn
  6. 三大独家优势赢得关注 神策数据成功签约借贷宝
  7. 查询计划中集的势(Cardinality)的计算
  8. html与cgi脚本的配合使用
  9. Spring文件上传
  10. 注意Entity中的Uptate
  11. linux系统wget、curl终端命令行获取公网ip地址及其他网络信息
  12. html单选框+点击取消选中,【前端JS】radio 可单选可点击取消选中
  13. SAP R3 display Vendor list, MKVZ .
  14. Java 异常处理 之 运行期异常
  15. linux命令高亮显示,colordiff:Linux下高亮显示 diff 输出
  16. js实现发送验证码倒计时按钮
  17. 打开文件管理器_【教程】模组管理器3.1食用指南
  18. 散列表--数据结构与算法之美--CH18、CH19、CH20
  19. RationalDMIS 7.1 手动测量特征注意事项
  20. python数据处理2: 拟合数据、整合数据、导出数据

热门文章

  1. 订阅号服务器消息推送数量,微信服务号一个月4次的推文次数用完了,怎么增加推送数量?...
  2. 计算机上的按键名有哪些,电脑键盘上各个按键名称与功能作用
  3. Spring Boot使用RabbitMQ出现诡异异常:Failed to send reply with payload 'OK',Cannot determine ReplyTo message
  4. 后台api接口幂等防止数据篡改,看完发现心领神会
  5. f.lux 自动调节显示器色温
  6. 基于R16标准的5G电力高精度授时解决方案PTP授时方案
  7. HTML+CSS奥运五环
  8. 什么是指纹浏览器,修改浏览器指纹工具
  9. chrome首页被hao123篡改 解决方法
  10. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第七节 按钮的创建和点击事件