百度之星2012初赛第二场C, 网页聚类, 二分
2012-06-03 14:13
369 查看
没做完
现在贴个代码出来
不知道对不对
现在贴个代码出来
不知道对不对
#ifdef _MSC_VER #define DEBUG #define _CRT_SECURE_NO_DEPRECATE #endif #include <fstream> #include <stdio.h> #include <iostream> #include <string.h> #include <string> #include <limits.h> #include <algorithm> #include <math.h> #include <numeric> #include <functional> #include <ctype.h> using namespace std; const int kMAX=10010; const double kEPS=10E-10; struct NODE { double x,y,z; }node[kMAX]; double Distance(const NODE &lhs,const NODE &rhs) { return (lhs.x-rhs.x)*(lhs.x-rhs.x)+(lhs.y-rhs.y)*(lhs.y-rhs.y)+(lhs.z-rhs.z)*(lhs.z-rhs.z); } double map[kMAX][kMAX]; int pre[kMAX],n,m; int Find(const int &x) { return x==pre[x]?x:Find(pre[x]); } bool Check(const double &t) { for(int i=0;i<n;++i) pre[i]=i; for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) if(map[i][j]<t+kEPS) { int a=Find(i); int b=Find(j); pre[a]=pre[b]=pre[i]=pre[j]=min(a,b); } sort(pre,pre+n); int cnt=unique(pre,pre+n)-pre; if(cnt==m) return true; else return false; } double BinSearch(double l,double r) { while(l+kEPS<r){ double mid=l+(r-l)/2; if (Check(mid)) l=mid; else r=mid; } return l; } int main(void) { #ifdef DEBUG freopen("../stdin.txt","r",stdin); freopen("../stdout.txt","w",stdout); #endif // scanf("%d",&ncase); while(~scanf("%d%d",&n,&m) && n) { for(int i=0;i<n;++i) scanf("%lf%lf%lf",&node[i].x,&node[i].y,&node[i].z); double lf_max=0.0,lf_min=1e20; for(int i=0;i<n;++i) for(int j=i;j<n;++j) { map[j][i]=map[i][j]=Distance(node[i],node[j]); lf_max=max(lf_max,map[i][j]); lf_min=min(lf_min,map[i][j]); } double ans=BinSearch(lf_min,lf_max); printf("%.6lf\n",ans); } return 0; }
相关文章推荐
- 【2012百度之星/初赛下】B:网页聚类
- 【百度之星】初赛第二场:B网页聚类
- 2012百度之星初赛第二场ProblemC
- 百度之星初赛第二场1006(二分+尺取)
- 2012百度之星初赛第二场A题解答
- 2012百度之星初赛——A题
- 2012百度之星第二场题目,A:度度熊就是要刷排名第一,B:网页聚类,C:度度熊的礼物,D:小王子的表演
- 2014百度之星初赛(第二场)——JZP Set
- [DFS]百度之星初赛第二场 棋盘占领
- 百度之星2016初赛第二场(Astar Round 2B)
- 百度之星 初赛第二场
- 2012百度之星初赛第2场:A题试题及参考答案
- 【2012百度之星/初赛上】D:轮子上的度度熊
- 2012百度之星冬季赛第二场第二题 消去游戏I
- [原创]百度之星2009初赛第二场第四题解答
- hdu5256 序列变换 百度之星初赛第二场 最长上升子序列变形
- 百度之星2015初赛第二场
- 【2012百度之星/初赛上】A:度度熊就是要第一个出场
- 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
- 2017"百度之星"程序设计大赛 - 初赛(B)1006.小小粉丝度度熊【预处理区间+二分】