【2012百度之星/初赛下】B:网页聚类
来源:互联网 发布:河南禁止网络外卖 编辑:程序博客网 时间:2024/05/16 11:36
描述:有N(N2+ (y_j-y_i)2 + (z_j-z_i)2。请求出最大的t,使得N个网页可以聚成K类,其中每个类至少包含一个网页,且任意两个位于不同类中网页的相似度都至少为t。
输入
第一行包含两个整数N和K,后面N行每行三列,分别为x、y、z。
输出
最大的t的值,使用四舍五入在小数点后保留六位小数。
样例输入
5 3
0.1 0.2 0.4
0.2 0.8 0.7
0.3 0.4 0.5
0.0 0.5 0.0
0.3 0.3 0.2
样例输出
0.170000
#include<iostream>#include<cstdio>#include<queue>#include<vector>using namespace std; const int MAXN = 2010;const double EPS = 1e-8;double x[MAXN], y[MAXN], z[MAXN], d[MAXN][MAXN];bool vis[MAXN];int n, k, cnt, belong[MAXN];queue <int> q;vector <int> e[MAXN];vector <int> :: iterator iter; double dist(int i, int j){return (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]) + (z[i] - z[j]) * (z[i] - z[j]);}void bfs(int p){memset(vis , 0 , sizeof(vis));q.push(p);while (!q.empty()){int u = q.front();q.pop();belong[u] = cnt, vis[u] = true;for(iter = e[u].begin(); iter != e[u].end(); ++iter){if (!vis[*iter])q.push(*iter);}}}bool check(double t){int i, j;for (i = 0; i < n; ++i){e[i].clear();for (j = 0; j < n; ++j){if (d[i][j] < t && i != j){e[i].push_back(j);}}}cnt = 0;for (i = 0; i < n; ++i){if (!belong[i]){cnt++;bfs(i);}}return cnt >= k;}int main(void){int i, j;scanf("%d %d", &n, &k);for (i = 0; i < n; ++i){scanf("%lf %lf %lf", &x[i], &y[i], &z[i]);}for (i = 0; i < n; ++i){for (j = 0; j < n; ++j){d[i][j] = dist(i, j);}}double l = 0, r = 3;while (r - l > EPS){memset(belong , 0 , sizeof(belong));double mid = (l + r) / 2;if( check(mid) )l = mid;elser = mid;}printf("%.6lf\n", l);return 0;}
- 【2012百度之星/初赛下】B:网页聚类
- 【百度之星】初赛第二场:B网页聚类
- 百度之星2012初赛第二场C, 网页聚类, 二分
- 2012百度之星初赛第一场B题
- 百度之星2012初赛Day2 B - 度度熊的礼物
- Chess(百度之星初赛B)
- 百度之星初赛B 1002 Factory
- 2017百度之星初赛b
- 【2012百度之星/初赛下】C:度度熊的礼物
- 【2012百度之星/初赛下】D:小王子的表演
- 2012百度之星初赛下 c题
- hdu 4832 百度之星初赛二B
- 百度之星初赛B——Chess
- 2017百度之星初赛(B)1001Chess------hdu6114
- 2017 百度之星 初赛B轮 HDU6114 HDU6118 HDU6119
- 百度之星初赛(B)--1006小小粉丝度度熊
- 2017百度之星初赛(B)-1001Chess
- 2017百度之星初赛B场总结
- 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
- iPhone NSString+NSMutableString+NSValue+NSAraay用法汇总
- B树、B-树、B+树、B*树 (转)
- centos vsftpd 安装配置
- android分页查询功能工具类的实现
- 【2012百度之星/初赛下】B:网页聚类
- Android ZoomControls放大缩小图片
- Ffmpeg选项详解
- 数组与指针
- 【2012百度之星/初赛下】C:度度熊的礼物
- hibernate.cfg.xml配置实例
- iPhone: There is no SDK with the name or path iphoneos XXX
- Android: 判断网络连接状态及连接类型
- MySQL数据库优化