题意:给出n个点   要求取k个点  这k个点中  距离最小的两个点要求距离最大

拿到手看不出是最大团  也看不出是二分答案(第一次用)

因为答案必然存在 一定有一个最值  所以用二分答案来做

最大距离为根号二乘10000  所以R=20000

且R-L>1e-4;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define N 60
  5.  
  6. int n;
  7. int mp[N][N];
  8. int ans;
  9. int alt[N][N];
  10. int Max[N];
  11. struct
  12. {
  13. int x,y;
  14. }a[N];
  15.  
  16. bool dfs(int cur,int tot)//cur是s1集合的个数
  17. {
  18. if(==cur)
  19. {
  20. if(tot>ans)
  21. {
  22. ans=tot;return true;
  23. }
  24. return false;
  25. }
  26.  
  27. for(int i=;i<cur;i++)
  28. {
  29. if( tot+cur-i<=ans )return false;
  30. int u=alt[tot][i];
  31. if( Max[u]+tot<=ans )return false;
  32. int next=;
  33. for(int j=i+;j<cur;j++)
  34. if(mp[u][ alt[tot][j] ])alt[tot+][next++]=alt[tot][j];
  35. if(dfs(next,tot+)) return ;
  36. }
  37. return ;
  38. }
  39.  
  40. int maxclique(void)
  41. {
  42. ans=;
  43. memset(Max,,sizeof(Max));
  44. for(int i=n-;i>=;i--)
  45. {
  46. int cur=;
  47. for(int j=i+;j<n;j++)if(mp[i][j])alt[][cur++]=j;//1为s1集合
  48. dfs(cur,);
  49. Max[i]=ans;
  50. }
  51. return ans;
  52. }
  53.  
  54. void built(double mid)
  55. {
  56. for(int i=;i<n;i++)
  57. for(int j= ;j<n;j++)
  58. {
  59. double t=sqrt( (a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y) );
  60. if( t>=mid )mp[i][j]=;
  61. else mp[i][j]=;
  62. }
  63. }
  64.  
  65. int main()
  66. {
  67. int k;
  68.  
  69. while(==scanf("%d%d",&n,&k))
  70. {
  71. for(int i=;i<n;i++)
  72. scanf("%d%d",&a[i].x,&a[i].y);
  73. double L=,R=;
  74. while(R-L>1e-)
  75. {
  76. double mid=(L+R)/;
  77. built(mid);
  78. if(maxclique()>=k)L=mid;
  79. else R=mid;
  80. }
  81. printf("%.2lf\n",L);
  82. }
  83. return ;
  84. }

Maximum Shortest Distance 最大团 二分答案 HDU 3585的更多相关文章

  1. maximum shortest distance

    maximum shortest distance Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...

  2. HDU - 6621 K-th Closest Distance 主席树+二分答案

    K-th Closest Distance 主席树第二波~ 题意 给你\(n\)个数\(m\)个询问,问\(i\in [l,r]\)计算每一个\(|a_{i}-p|\)求出第\(k\)小 题目要求强制 ...

  3. 【二分+最大团】【HDU3585】【maximum shortest distance】

    题目大意 在N个点钟 选出K个点 使得这K个点间的最小距离最大 二分距离,然后如果两点间距离小于它的边当做不存在,求出最大团,如果最大团>=K,向上缩小区间 <  K  ,  向下缩小区间 ...

  4. HDU3585 最大团+二分

    maximum shortest distance Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  5. hdu 3585 二分+最大团

    题目:给出平面上n个点,现在找m个点,并且使得这m个点最近的两个最远. 分析:显然这满足二分的性质,二分答案,根据点距离需要大于等于二分值重新构造新图,则问题变成了:在新图中找出满足所有点对之间的距离 ...

  6. HDU 3586 二分答案+树形DP判定

    HDU 3586 『Link』HDU 3586 『Type』二分答案+树形DP判定 ✡Problem: 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏 ...

  7. HDU 5884 Sort(二分答案+计算WPL的技巧)

    Sort Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. Hdu Can you find it?(二分答案)

    Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others) P ...

  9. 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)

    K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...

随机推荐

  1. MySQL删除数据库时的错误(errno: 39)

    由于mysql数据库是默认区分大小写的,部署的时候发现多了一些重复的表,于是就把多余的表删掉了.可是,剩下的重复的表再删除时会提示:表不存在. 于是,想把数据库删掉重新创建,可是,得到了 ERROR ...

  2. BZOJ 4764: 弹飞大爷

    4764: 弹飞大爷 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 4  Solved: 4[Submit][Status][Discuss] Des ...

  3. 【BZOJ4444】国旗计划

    Description 题目链接 Solution 磕了3个半小时没做出来的题,就是全场崩. 首先对于一个人的答案是很好求的,显然是选择左端点在此人区间中,右端点最远(最靠右)的人作为下一个接棒人.因 ...

  4. svn查看日志(show log)显示时间为1970的解决方法

    问题: 在修改文件后show log无法显示日志,上面的时间会自动在2016年和1970年间跳,而且设置不了时间.解决方法:1.编辑svnserve.conf,设置“anon-access=none” ...

  5. Sql数据库不能频繁连接

    这个问题怎么说呢,我频繁的读一个json文件,所以就频繁的去连接了数据库.所以导致了数据库后来就不工作了(罢工?O(∩_∩)O哈哈~) 解决办法是加一个判断语句,如果是空的就连接,否则就别一直连接了. ...

  6. Solr记录-solr内核与索引

    Solr核心(内核) Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件.我们需要创建一个Solr Core来执行索引和分析等操作. Solr应用程序可以包含一 ...

  7. HDU 3537 基础翻硬币模型 Mock Turtles 向NIM转化

    翻硬币游戏,任意选3个,最右边的一个必须是正面.不能操作者败. 基本模型..不太可能自己推 还是老实记下来吧..对于单个硬币的SG值为2x或2x+1,当该硬币的位置x,其二进制1的个数为偶数时,sg= ...

  8. linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

    一.linux下编译make文件报错“/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101 ...

  9. Java Web之路(二)Servlet之HttpServletResponse和HttpServletRequest

    HttpServletResponse 1.告诉服务器应用使用UTF-8解析文本的两种方式,告诉客户端要使用什么编码 response.setHeader("content-type&quo ...

  10. 机器学习&深度学习视频资料汇总

      第一部分 基础语言   pandax视频教程 链接: https://pan.baidu.com/s/1pLqavVX 密码: fath python入门到精通 链接: https://pan.b ...