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

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. 2011-02 Emacs相关闪存
  2. pycharm管理多个工程
  3. FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡
  4. 基于连通域字符分割的流程_基于连通域的版面分割研究
  5. MySQL / 可重复读到底是怎么实现的?图解 ReadView 机制
  6. 比特协议是骗局吗_山寨币也玩收割,“BTG比特黄金”挖矿骗局大揭秘
  7. 一个简单的fftw3例子:正弦信号的离散傅里叶变换
  8. Apache服务器全局配置之服务器标识配置篇
  9. 思维认知-读mindhacks杂记
  10. 计算机硬盘的常用分区工具,常用的几款分区合并工具推荐,合理使用电脑硬盘...
  11. 远程连接centos 服务器,怎么用远程桌面连接CentOS 8
  12. C语言怎么实现语音功能
  13. 垃圾回收之三色标记法
  14. 详细教程!手把手教你制作个人微信红包封面
  15. [转帖] 李竞恒:帝国的残阳
  16. Android-PickerView实现全国地区选择
  17. COleDateTime ParseDateTime 方法
  18. MATLAB 如何绘制堆叠柱状图(stack)并更改所有子柱的颜色
  19. 数据库综合案例(商店买商品)
  20. 2021年最新以太坊源码导读-p2p架构

热门文章

  1. 没有传说,也没有神话,我只相信我自己
  2. FPGA开发要懂得使用硬件分析仪调试——ILA
  3. 海岛奇兵服务器维护费,坑爹啊! 海岛奇兵额外建筑工被疯狂吐槽!
  4. LinkedList 源码分析
  5. Qt creator使用笔记
  6. 编写驱动的makefile使要
  7. DDR的前世与今生(一)
  8. Android开发之三种动画
  9. centos安装与配置dhcp服务
  10. extmail电子邮件系统