携程全球数据中心建设(并查集)
来源:互联网 发布:nfcs网络金融征信系统 编辑:程序博客网 时间:2024/05/21 09:29
并查集,这题挺简单,注意一下根据两点经纬度求两点距离的公式。
携程全球数据中心建设
Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 108 Accepted Submission(s) : 34
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
携程为了扩展全球在线旅游业务,决定在全球建设多数据中心,以便提高网站的访问速度和容灾处理。
为了实现每个数据中心的数据能互通,数据中心之间需要通过光纤连接。为了节约光纤成本,我们计划采用点对点方式来达到最终各个数据中心的数据互通,每个数据中心本身都可以作为数据中转站。做为全球多数据中心设计者,您需要知道最短的光纤总长度,来把所有的数据中心都实现互通。假设地球是个圆球,且表面是平滑的,并且没有任何阻碍物(河流,山脉)。
输入数据是一组数据中心的经纬度
纬度: -90° 到 +90°
经度: -180° 到 +180°
(圆周率pi= 3.14159265358979323846)
为了实现每个数据中心的数据能互通,数据中心之间需要通过光纤连接。为了节约光纤成本,我们计划采用点对点方式来达到最终各个数据中心的数据互通,每个数据中心本身都可以作为数据中转站。做为全球多数据中心设计者,您需要知道最短的光纤总长度,来把所有的数据中心都实现互通。假设地球是个圆球,且表面是平滑的,并且没有任何阻碍物(河流,山脉)。
输入数据是一组数据中心的经纬度
纬度: -90° 到 +90°
经度: -180° 到 +180°
(圆周率pi= 3.14159265358979323846)
Input
第一行第一个整数N(1≤N≤100),表示有多少个用例. 每个用例包含了:
第一行,小数D(1≤D≤1,000,000),表面圆球的直径(公里).
第二行,小数L(1≤L≤1,000,000) 光纤总长度 (公里).
第三行,整数C(1≤C≤100) ,表示数据中心的数量.
接下来的C行, 每行有2个形如"X Y"的小数,表示每个数据中心的纬度(-90≤X≤90)和经度 (-180≤Y≤180).
第一行,小数D(1≤D≤1,000,000),表面圆球的直径(公里).
第二行,小数L(1≤L≤1,000,000) 光纤总长度 (公里).
第三行,整数C(1≤C≤100) ,表示数据中心的数量.
接下来的C行, 每行有2个形如"X Y"的小数,表示每个数据中心的纬度(-90≤X≤90)和经度 (-180≤Y≤180).
Output
每个用例输出一行. 如果光纤长度L足够连接所有数据中心,输出"Y", 否则输出"N"。
Sample Input
2127425900351.3 042.5 -7548.8 312742620230.266 97.7530.45 91.1333
Sample Output
YN
Source
CodingTrip - 携程编程大赛 (预赛第一场)
#include <iostream>#include <algorithm>#include <iomanip>#include <cmath>#include <cstring>#include <stdio.h>#define pi 3.14159265358using namespace std;const int MAX_M = 100 + 10;const int MAX_N = (MAX_M * (MAX_M - 1)) >> 1;double w[MAX_N];int u[MAX_N],v[MAX_N],p[MAX_M],r[MAX_N];struct Point{ double x,y;};Point point[MAX_M];int cmp(int i,int j){ return w[i] < w[j];}int _find(int x){ return x == p[x] ? x : (p[x] = _find(p[x]));}double rr;double dis(double x1,double y1,double x2,double y2){ x1 = x1 * pi / 180.0; x2 = x2 * pi / 180.0; y1 = y1 * pi / 180.0; y2 = y2* pi / 180.0; return rr * acos(sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y1 - y2));}int C,T;double ans;int main(){ cin >> T; while(T--) { cin >> rr; rr = rr / 2.0; double l; cin >> l; ans = 0.0; cin >> C; for(int i = 1;i <= C;i++) { p[i] = i; cin >> point[i].x >> point[i].y; } int cnt = 1; for(int i = 1;i <= C;i++) { for(int j = i + 1;j <= C;j++) { u[cnt] = i; v[cnt] = j; w[cnt] = dis(point[i].x,point[i].y,point[j].x,point[j].y); r[cnt] = cnt; cnt++; } } sort(r + 1,r + cnt,cmp); int a, b; for(int i = 1;i < cnt;i++) { a = _find(u[r[i]]); b = _find(v[r[i]]); if(a != b) { p[a] = b; ans += w[r[i]]; } } if(ans <= l) cout << "Y" << endl; else cout << "N" << endl; } return 0;}
0 0
- 携程全球数据中心建设(并查集)
- 【CodingTrip - 携程编程大赛第三场】1003 携程全球数据中心建设
- HDU 携程编程大赛 1003 携程全球数据中心建设 Prim OR Kruskal
- HDU 携程编程大赛 1003 携程全球数据中心建设 水题
- CodingTrip - 携程编程大赛 (预赛第一场)第三题 携程全球数据中心建设
- 携程第一场 第三题 携程全球数据中心建设 (最小生成树 经纬度距离)
- 携程预赛_携程全球数据中心建设(最小生成树prim+计算几何)
- 携程初赛 携程全球数据中心建设 球面上两点的最短距离 + 最小生成树
- 数据中心建设
- 数据中心建设的若干问题
- 畅通工程之最低成本建设问题(最小生成树(Kruskal)+并查集)
- XX银行数据中心建设方案
- 浅谈商业银行绿色数据中心建设
- 全球数据中心发展趋势和特点
- HDU3938 并查集 并查集
- 并查集(集并查)
- 数据中心的建设与绩效管理
- 2012高校数据中心建设与发展研讨会
- css 中 visted
- 总结的几道面试题
- JSP页面跳转的五种方法
- openstack动态调度现状
- 常用的php字符串处理函数
- 携程全球数据中心建设(并查集)
- java 学习BigDecimal
- 如何用最少的比较次数找出一个数列的最大和最小值
- 简单的php Mysql类(查询 删除 更新)
- 图像滤波与创建预定义的滤波算子
- MARK 移动互联网技术与能力预测
- utuntu 下的php开发
- 自己动手写操作系统 实模式到保护模式 GDT表
- hdu 2222 Keywords Search (AC自动机)