描述

百度地图有自己的一套坐标系(你可以把它看作一个笛卡尔坐标系),在这套坐标系里,一个标准单位为1km。而在这坐标系上针对地理信息进行标注的数据,大多数时候是通过购买的方式完成的。为了节约数据更新的成本,数据组里的鑫哥想出了一个好主意——自己测数据。
鑫哥按照他的预想开始实验;在每组试验中,鑫哥选取了三个已经被准确标注在百度地图的坐标系里的移动运营商的基站作为信号接收点(这里可以准确的得到信号的接收时间信息)。当信号接收点附近的用户手机签到时,三个信号接收点就会先后接收到这个信号,并可以准确的知晓接收到信号的时间(将第一个信号点接收到信号的时间记为0秒时刻)。由此,我们就可以确定用户手机签到的位置的在地图的准确坐标了。
现在已知以下数据:
1.三个信号接收点在百度地图坐标系中的具体坐标(x1,y1), (x2,y2), (x3,y3);
2.三个信号点得到用户发出的信号的时间t1, t2, t3(t1, t2, t3 ≥ 0),单位s; t1, t2, t3至少有一个数为0;
3.信号的转播速度C,单位m/s;
请帮助鑫哥写个程序,计算下用户发出信号的位置在百度地图坐标系内的坐标(这个点是唯一的)。

输入
输入包含多组数据,每组数据格式如下:
C
x1 y1 x2 y2 x3 y3
t1 t2 t3
最后一组数据为0,表示输入结束。
输出
针对每组测试数据,请先输出这个组的编号(第n组就是输出“Case n:”);然后换行输出信号发出点的坐标(x,y) 。x,y应该由空格分隔,并被舍入到小数点后第六位。
样例输入
1000
0 1 1 1 2 1
0 0.6 1.6
1000
0 0 0 1 1 0
0.4142135 0 0
1000
0 0 1 0 2 1
0 0.414213562373 1
1000
0 0 0 -1 0 1
0 0 1
1000
0 0 0 1 0 -1
0 1 0
1000
0 0 1 0 -1 0
0 1 0
1000
0 0 -1 0 1 0
0 0 1
100
0 0 0 1 1 0
0 10 10
0
样例输出
Case 1:
0.200000 1.000000
Case 2:
1.000000 1.000000
Case 3:
0.000000 1.000000
Case 4:
0.000000 -0.500000
Case 5:
0.000000 -0.500000
Case 6:
-0.500000 0.000000
Case 7:
-0.500000 0.000000
Case 8:
0.000000 0.000000

主要思路:这个题用三角函数来解方程会很方便的,通过将两个方程转化为一个三角函数方程,然后求角度cita和半径r就可以了(特别说明:最后那个分式中的分母部分中的l2、l3是没有平方的)。

实现代码:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double x[4], y[4], t[4];void solve(int i , int j , int k)
{double x2, y2, x3, y3, l2, l3 , sum , fai , cita , r , m , n;   //citax2 = x[j] -x[i] , y2 = y[j] -y[i];x3 = x[k] -x[i] , y3 = y[k] -y[i];l2 = t[j] -t[i] , l3 = t[k] -t[i];m = x2*x2 + y2*y2 - l2*l2 , n = x3*x3 + y3*y3 - l3*l3;// 得到方程 a*sin(cita) + b*cos(cita) = -cdouble a = m*y3-n*y2 ;   //sin(cita)的系数double b = m*x3-n*x2 ;   //cos(cita)的系数double c = m * l3 - n * l2;// 得到方程 sin(cita+fai) = -c/(sqrt(a*a+b*b))fai = atan2(b, a) ;     //先求出角度faisum = asin(- c/sqrt(a*a+b*b+1e-15));    //通过反正弦函数求出cita+fai的角度和cita = sum - fai;      // 此时cita是一个锐角if (abs(m)>abs(n))r = m/(l2 + x2 *cos(cita) + y2 * sin(cita))/2;elser = n/(l3 + x3 *cos(cita) + y3 * sin(cita))/2;if(r < 0){sum = - sum + 3.141592653579;    //r<0,说明不能是锐角,应该是个钝角cita = sum - fai;if (abs(m)>abs(n))r = m/(l2 + x2 *cos(cita) + y2 * sin(cita))/2;elser = n/(l3 + x3 *cos(cita) + y3 * sin(cita))/2;}printf("%.6f %.6f\n", r * cos(cita) + x[i], r * sin(cita) + y[i]);
}
int main(void)
{int num = 1;double c;while(scanf("%lf", &c)!=EOF){c/=1000;if (abs(c) < 1e-6)break;scanf("%lf %lf %lf %lf %lf %lf", x, y, x+1, y+1, x+2, y+2);scanf("%lf %lf %lf", t, t+1, t+2);printf("Case %d:\n", num++);t[0] *= c;t[1] *= c;t[2] *= c;solve(0, 1, 2);}return 0;
}

【2012百度之星 / 资格赛】I:地图的省钱计划相关推荐

  1. 【2012百度之星资格赛】E:C++ 与Java

    时间限制:  2000ms  内存限制:  65536kB 描述 在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时.Java的爱好者会说他们的程序更加整洁 ...

  2. 【2012百度之星/资格赛】E:C++ 与Java

    时间限制:2000ms       内存限制:65536kB 描述 在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时.Java的爱好者会说他们的程序更加整 ...

  3. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]

    时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johnsonj ...

  4. 【2012百度之星资格赛】G:聊天就是Repeat

    时间限制:  1000ms  内存限制:  65536kB 描述 百度Hi作为百度旗下的即时聊天工具,在百度公司内部很是流行.要实现这样的一个聊天工具,最重要的问题就是要能保证我发出的内容能原封不动的 ...

  5. 【2012百度之星/资格赛】J:百度的新大厦

    描述 继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡.不同于百度在北京的搜索框大厦,新的百度国际大厦是一栋高楼,有非常多的楼层,让每个楼中的电梯都能 ...

  6. 【2012百度之星资格赛】F:百科蝌蚪团

    时间限制:  1000ms  内存限制:  65536kB 描述 百度百科有一支神奇的队伍,他们叫自己"百科蝌蚪团".为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出了一 ...

  7. 【2012百度之星资格赛】J:百度的新大厦

    时间限制:  1000ms  内存限制:  65536kB 描述 继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡.不同于百度在北京的搜索框大厦,新的 ...

  8. 【2012百度之星/资格赛】H:用户请求中的品牌

    时间限制:  1000ms  内存限制:  65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johns ...

  9. 【2012百度之星/资格赛】F:百科蝌蚪团

    时间限制: 1000ms      内存限制: 65536kB 描述 百度百科有一支神奇的队伍,他们叫自己"百科蝌蚪团".为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出 ...

最新文章

  1. 浙江农林大学2021年新生杯程序设计竞赛(同步赛)
  2. python算法预测风险等级_一般算法水平到底什么样子才能秒杀Bat的笔试编程题?...
  3. CGLib 调用API 及原理分析
  4. linux的Ubuntu
  5. 庖丁解牛TLD(二)——初始化工作(为算法的准备)
  6. C++const的多种用法
  7. EJB是什么?EJB的概念分析与理解(copy)
  8. qt中拖动窗口widget
  9. thinkPHP6.0 控制器请求方法延迟生效解决办法
  10. Spring框架学习[IoC容器高级特性]
  11. Mac上的Spotlight搜索都能干什么?
  12. linux安装mvn及nexus远程仓库
  13. 程序员必读的30本书籍
  14. Windows 10原创知识题(第四版)
  15. 虚拟机中标麒麟的网络设置
  16. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(二十二)...
  17. 除了照片征集、视频征集,fotoo还可以征集什么?
  18. 使用Canvas HTML5画出时钟
  19. Marlon's String zoj3587
  20. 如何选择一款电销产品开展业务

热门文章

  1. kali-linux虚拟机与主机共享文件
  2. 从 FFmpeg 性能加速到端云一体媒体系统优化
  3. 看全域消费者运营Quick Audience如何实现自动化营销?
  4. “云原生”为什么对云计算生态充满吸引力?
  5. 高德最佳实践:Serverless规模化落地有哪些价值?
  6. 如何设计一个端计算架构?
  7. 如何打造“智能助理”?阿里对话开发平台这样做
  8. 小游戏掉帧卡顿启动慢运行内存不足……这些问题有解吗?
  9. ADAMoracle预言机的发展趋势和特点
  10. 不擅长面试可以怎么准备面试?