【2012百度之星/初赛下】B:网页聚类
描述:有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:网页聚类相关推荐
- 【2012百度之星/初赛下】C:度度熊的礼物
描述:度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值.度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物.不同类型的朋友在 ...
- 【2012百度之星/初赛下】A:度度熊就是要刷排名第一
描述:一天度度熊在Baidu游戏大厅中发现了一个隐藏的神奇游戏,叫做"度度熊的逆袭".度度熊很好奇到底是什么情况,于是就进入了游戏.这个游戏很神奇,游戏会给出n个数Ai,度度熊可以 ...
- 【2012百度之星/初赛上】B:小小度刷礼品
描述:一年一度的百度之星又开始了,这次参赛人数创下了吉尼斯世界纪录,于是百度之星决定奖励一部分人:所有资格赛提交ID以x结尾的参赛选手将得到精美礼品一份. 小小度同学非常想得到这份礼品,于是他就连续狂 ...
- 【2012百度之星/初赛上】D:轮子上的度度熊
描述:百度楼下有一块很大很大的广场.广场上有很多轮滑爱好者,每天轮滑爱好者们都会在广场上做一种叫做平地花式轮滑的表演.度度熊也想像他们一样在轮上飞舞,所以也天天和他们练习. 因为度度熊的天赋,一下就学 ...
- 【2012百度之星/初赛上】A:度度熊就是要第一个出场
描述:Baidu年会安排了一场时装秀节目.N名员工将依次身穿盛装上台表演.表演的顺序是通过一种"画线"抽签的方式决定的. 首先,员工们在一张白纸上画下N条平行的竖线.在竖线的上方从 ...
- 【2012百度之星/初赛上】C:集合的交与并
对于一个闭区间集合{A1,A2--AK}(K>1,Ai≠Aj{i≠j}),我们定义其权值 其中|X|表示X区间的长度:如果X为空集|X|=0. 当然,如果这些闭区间没有交集则权值为0. 给定N个 ...
- 2016百度之星 - 初赛(Astar Round2B)解题报告
此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B) Prob ...
- 2012百度之星冬季赛第二场第二题 消去游戏I
2012百度之星冬季赛第二场第二题 消去游戏I 题目: Alice和Bob又开始发明新游戏了,这回的名字叫消去游戏. 消去游戏的道具是一堆排成一行的积木,每个积木上面都有一个数字Ai.同时游戏也需要M ...
- 2016百度之星 - 初赛(Astar Round2A)解题报告
此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" ...
最新文章
- R Learnilng 十八讲1-6
- matlab2c使用c++实现matlab函数系列教程-range函数
- HTML+CSS网页制作——恒德电子
- winform打印服务器上的pdf文件,c# winform 静默打印 PDF文件
- 跨境电商erp管理系统
- java 事务级别_java事务隔离级别
- 马化腾:创建生物型组织,让企业组织自我进化
- 感动!有人将吴恩达的视频课程做成了文字版
- linux 分区 intel raid,linux on intel sata raid
- Android实现一键开启自由窗口、分屏、画中画模式——画中画模式
- macOS系统怎么本地运行php文件
- 离婚时,住房公积金分割吗?
- 社会神经网络有哪些,神经网络的神经网络
- 【图像处理】图像锐化的工作原理和算法实现(matlab实现)
- 速围观!上千款“AI黑科技”在此集结
- 工具 UltraISO
- 关于红杏的公益代理, Android Studio以及freso的编译
- 电气化铁路变电站自动化安全监控传输方案
- Cornerstone 破解版
- 幽默感七个技巧_提升幽默感的3种方法
热门文章
- android多语言编码格式,在Android中使用国家/地区代码以编程方式更改语言
- 最新发布!《阿里云实时计算 Flink 版解决方案白皮书-2021版》开放下载
- 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
- 国内唯一,阿里云挺进 Forrester 数据流分析报告“强劲表现者”象限
- 【国内首家!】阿里云专有云通过商用密码应用安全性评估
- 马云启动“NASA”计划 为未来20年愿景研发核心科技
- 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)
- 使用Anemometer基于pt-query-digest将MySQL慢查询可视化
- 远程桌面无法复制文本时解决办法
- Oracle Recyclebin