CodingTrip - 携程编程大赛 (预赛第一场)第三题 携程全球数据中心建设
2014-04-10 22:23
387 查看
//球面上2点的距离计算 + 最小生成树
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <string> #include <cmath> using namespace std; const double pi = 3.14159265358979323846; double d,r,sum,cur,n; struct node { double j, w; node(){}; node(double _x, double _y): j(_x), w(_y) {} }; node tt[105]; inline double distence(double j1, double w1, double j2, double w2) { return r*acos(cos(w1)*cos(w2)*cos(j2-j1) + sin(w1)*sin(w2)); } double map[105][105]; bool visited[105]; double dist[105]; int MinVertex() { int k = -1; double minValue=pi*d; for (int i=0; i<n; i++) { if (dist[i] < minValue && visited[i]==false) { minValue=dist[i]; k = i; } } return k; } double prim() { for(int i=0;i<n;i++) dist[i]=map[0][i]; fill(visited,visited+105,false); visited[0]=true; double cost=0; while(true) { int K=MinVertex(); if (K==-1) break; visited[K]=true; cost+=dist[K]; for (int i=0;i<n;i++) if (visited[i]==false && map[K][i]<dist[i]) dist[i]=map[K][i]; } return cost; } void run() { cin>>d>>cur>>n; r=d/2.0; double j, w; for(int i=0;i<n;i++) { scanf("%lf %lf", &w, &j); w = w*pi/180.0; j = j*pi/180.0; tt[i] = node(j, w); } for(int i=0;i<n;i++){ for(int j=0;j<n;j++) { double dis; if(i==j) dis=0; else dis = distence(tt[i].j, tt[i].w, tt[j].j, tt[j].w); map[i][j]=map[j][i]=dis; } } sum=prim(); if(sum>cur) printf("N\n"); else printf("Y\n"); } int main() { int T; cin>>T; while(T--) run(); return 0; }
相关文章推荐
- 【CodingTrip - 携程编程大赛第三场】1003 携程全球数据中心建设
- 2014 CodingTrip - 携程编程大赛 (预赛第一场)
- CodingTrip - 携程编程大赛 (预赛第一场) 括号匹配
- CodingTrip - 携程编程大赛 (预赛第一场)旋转的二进制
- CodingTrip - 携程编程大赛 (预赛第一场)第四题
- 【解题报告】[动态规划] CodingTrip - 携程编程大赛 (预赛第一场)- 聪明的猴子
- CodingTrip - 携程编程大赛 (预赛第一场)第二题 括号匹配
- CodingTrip - 携程编程大赛 (预赛第一场) :1002 括号匹配
- CodingTrip - 携程编程大赛 (预赛第一场)
- CodingTrip - 携程编程大赛 (预赛第二场)
- 2014 CodingTrip - 携程编程大赛 (预赛第二场)
- CodingTrip - 携程编程大赛 (预赛第二场)——位图像素的颜色
- CodingTrip - 携程编程大赛-第三题-位图像素的颜色
- CodingTrip - 携程编程大赛 (预赛第二场)1001剪刀石头布&1003 位图像素的颜色
- 携程第一场 第三题 携程全球数据中心建设 (最小生成树 经纬度距离)
- 【CodingTrip - 携程编程大赛第一场】1001 聪明的猴子
- 【CodingTrip - 携程编程大赛第一场】1002 括号匹配
- CodingTrip - 携程编程大赛 (预赛第二场):1001 剪刀石头布
- 携程预赛_携程全球数据中心建设(最小生成树prim+计算几何)
- CodingTrip - 携程编程大赛 (预赛第一场)