如果对团的知识不够了解的可以看看牛人的

http://www.cnblogs.com/pushing-my-way/archive/2012/08/08/2627993.html

题意:有n个点求最远距离的k个点的最短的那条边。

思路:我们可以求出任意两点的距离,然后二分距离,求K个点的最大团。

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=55;
double map[N][N];
struct node
{int x,y;
}point[N];
int dp[N],stk[N][N];
int mx,n,K;
double pp[N*N];
double dist(int x1,int y1,int x2,int y2)
{return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)*1.0);
}
int dfs(int ns,int dep,int dis)
{if(0==ns){if(dep>mx){mx=dep;}return 1;}int i,j,k,p,cnt;for(i=0;i<ns;i++){k=stk[dep][i];cnt=0;if(dep+n-k<=mx)return 0;if(dep+dp[k]<=mx)return 0;for(j=i+1;j<ns;j++){p=stk[dep][j];if(map[k][p]>=dis){stk[dep+1][cnt++]=p;}}dfs(cnt,dep+1,dis);}return 0;
}
int clique(double dis)
{int i,j,ns;for(mx=0,i=n-1;i>=0;i--){for(ns=0,j=i+1;j<n;j++)if(map[i][j]>=dis)stk[1][ns++]=j;dfs(ns,1,dis);dp[i]=mx;}return mx;
}
int main()
{int i,j;while(scanf("%d%d",&n,&K)!=EOF){int a=0;for(i=0;i<n;i++){scanf("%d%d",&point[i].x,&point[i].y);map[i][i]=0;for(j=0;j<i;j++){map[i][j]=map[j][i]=dist(point[i].x,point[i].y,point[j].x,point[j].y);pp[a++]=map[i][j];}}sort(pp,pp+a);int left=0;int right=a;double mi;while (right>left){int mid=(right+left)>>1;int t=clique(pp[mid]);if(t==K){mi=pp[mid];left++;//找到了符合条件的,但是要求是最大的,所以还要继续造符合要求的
            }else if(t>K)left=mid;else right=mid;}printf("%.2lf\n",mi);}return 0;
}

转载于:https://www.cnblogs.com/BruceNoOne/p/3269576.html

hdu 3585(二分+最大团)相关推荐

  1. HDU 2389(二分最大匹配优化算法,Hopcroft-Carp)

    HDU 2389(二分最大匹配优化算法,Hopcroft-Carp) 题目链接: 大致题意; 您能帮助客人在下雨之前尽可能多地找到一把雨伞? 给定所有客人的位置和跑步速度,雨伞位置,到下雨开始时的时间 ...

  2. hdu3585 二分最大团(dp优化)

    题意       给你一些点( <= 50),让你找到k个点,使得他们之间的最小距离最大. 思路:       求最小的最大,我们可以直接二分去枚举距离,但是要注意,不要去二分double找距离 ...

  3. hdu 5248(二分+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...

  4. hdu 3622 二分+2-sat

    /* 二分+2-sat 题意:在一个二维平面上给你n个炸弹,和2*n个位置,每一行的两个位置仅仅能有一个放炸弹 如今炸弹爆炸有一个半径.当炸弹爆炸时两个炸弹的半径化成的圆不能相交,求最大半径 二分半径 ...

  5. hdu 4033 二分几何

    参考:http://blog.csdn.net/libin56842/article/details/26618129 题意:给一个正多边形内点到其他顶点的距离(逆时针给出),求正多边形的边长 二分多 ...

  6. hdu 4004 二分查找

    直接二分查找答案即可,我的判断函数没有像大牛们那样优化,但是过是没问题的~ /* * hdu4004/linux.cpp * Created on: 2011-9-4 * Author : ben*/ ...

  7. hdu 5265(二分+枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5265 解题思路: 首先对每个数进行去模,这样得到的数就会是[0,p-1]的范围,接下来就是如何组合的问 ...

  8. hdu 3264(二分+圆相交面积)

    题意:给出一些圆,选择其中一个圆的圆心为圆心,然后画一个大圆,要求大圆最少覆盖每个圆的一半面积.求最小面积. 解题思路:首先枚举每个圆,以其圆心作为大圆的圆心,然后再用二分去寻找最小的半径. #inc ...

  9. hdu 5093 二分匹配

    /* 题意:给你一些冰岛.公共海域和浮冰,冰岛可以隔开两个公共海域,浮冰无影响 求选尽可能多的选一些公共海域点每行每列仅能选一个. 限制条件:冰山可以隔开这个限制条件.即*#*可以选两个 预处理: * ...

最新文章

  1. Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本
  2. python写学生系统-用python编写学生管理系统
  3. LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
  4. 【线上分享】WebRTC传输与服务质量
  5. Spark(十二) -- Spark On Yarn Spark as a Service Spark On Tachyon
  6. 我们为什么需要云原生?看完这一篇就够了
  7. 基于JAVA+Servlet+JSP+MYSQL的新闻发布系统
  8. 将ubuntu的home迁移至第二块磁盘
  9. 如何在ant脚本中获得svn版本号
  10. WINX新增(1): KMP字符串查找算法
  11. 邮箱显示exchange账号服务器错误,删除监视邮箱Exchange服务器不正常状态
  12. VMware安装苹果虚拟机-亲测有效
  13. bp神经网络优化算法对比,提高bp神经网络精度
  14. 代码获取DEP按钮及获取DEP控件
  15. 老王论坛蓝色大屏幕调节亮度
  16. 【学习笔记之计算机组成原理篇】计算机系统概论
  17. 一文搞清楚opengl、openglES、GLEW、的关系GLUT、FreeGLUT、GLFW
  18. C++ 类的静态成员及静态成员函数
  19. 实现父类一个动物的类, 包括成员变量名字年龄皮毛颜色,带参数构造函数,动物类有一个方法,move,打印动物是可以动的 1.《实现一个子类老鼠的类,继承动物类,老鼠类继承父类成员变量,老鼠还有个自己的属
  20. OC字符串分割,截取,转换,拼接

热门文章

  1. 苹果2010新品发布会图文实录
  2. CIC滤波器的Matlab仿真与FPGA实现
  3. php导出excel列数太多,php生成excel列名,超过26列大于Z问题解决办法
  4. 如何同时安装Office2003和Office2007!
  5. 跳出数据计算拯救人工智能之自然法则
  6. logstash 自动重新加载配置
  7. php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
  8. openstack 云主机关机,自动running
  9. NB-IoT这块热豆腐公认可口 但勿太心急
  10. 机器学习:数据驱动的科学