Dotcpp  >  编程题库  >  蓝桥杯算法提高VIP-Navigation
题目 1889:

蓝桥杯算法提高VIP-Navigation

时间限制: 3s 内存限制: 192MB 提交: 1 解决: 0

题目描述

全球定位系统(GPS)是一个导航系统,根据一些在距地表大约20,000千米的轨道运行的卫星。每个卫星在一个已知的轨道上运行,发射编码着当前时间的无线电信号。如果一个装有全球定位系统的交通工具有一个非常精确的时钟,它就可以比较它自己的当地时间和从卫星上接受到的编码成信号的时间。因为无线电信号按一个已知的速度传播,所以这个交通工具能够计算出它目前的位置和信号发出时卫星的位置之间的距离。通过测算这个交通工具和一些在已知轨道上运行的卫星之间的距离,它可以非常精确地计算出自己的位置。




你必须写一个简单的“自动导航装置”程序,根据GPS的导航。为了让这个问题更简单,我们描述一个二维的问题。换句话说,你不需要考虑地球的曲率或者卫星的高度。此外,这个问题使用了更加适合于飞机和声波的速度而不是卫星和无线电波。
给定一组移动的信号源,你的程序必须计算出在笛卡尔平面内的接收点。然后,给定一个在平面内的目标点,你的程序必须计算出从接收点到目标点指南针的指向。所有的指南针的指向用角度表示。指南针指向0(北)相当于Y轴方向,指南针指向90(东)相当于X轴方向,就像图1所展示的那样。

输入格式

读入包含多组测试数据。
每组数据的第一行包含一个整数N (1 ≤ N ≤ 10),表示信号源的数量。接下来有3个浮点数:t,x和y。这里,t表示当所有的信号被接收时精确的当地时间,从基准时间(0时刻)按秒计时算起;x和y表示在笛卡尔平面内目标点的坐标。接下来N行每行包含4个浮点数,携带有1个信号源的信息。前2个数字表示信号源在基准时间在笛卡尔平面内的位置。第3个数字表示信号源向指南针指向D(0 ≤ D < 360)前进。第4个数字是编码在信号里的时间——也就是,信号发出的时间,从基准时间按秒计时算起。输入文件所有数字小于10000,没有一个浮点数在小数点后超过5位。
最后一组数据的接下来一行包含4个0。
坐标系的单位距离是1m。假设每个信号源以100m/s的速度在笛卡尔平面上移动,信号以350m/s的速度传播。由于时钟同步的不精确,你计算的距离都只精确到0.1m。也就是说,如果2个点相距0.1m以内,你应该把它们看成相同的点。信号可能在传播途中被干扰,所以接收到的多个信号可能会矛盾。

输出格式

对于每组数据,输出数据的编号和从接收位置到目的地指南针的指向,用角度表示,四舍五入到整数。使用在样例输出中展示的标识。如果信号包含不够多的信息来计算接收位置(也就是,符合所有信号的超过一个位置),输出“Inconclusive”。如果信号矛盾(也就是,没有位置符合所有的信号),输出“Inconsistent”。如果接收位置相距目的地0.1m以内,输出“Arrived”。如果情形是Inconclusive或者Inconsistent,那么你不需要考虑Arrived的情形。
图2对应着样例的第一个数据。t=0时3个卫星的位置A(-100,350),B(350,-100),和C(350,800)。被GPS装置接收的信号都在t=1.75时被发出,当卫星处在位置A',B',C'的时候(然而,通常被GPS装置接收的信号发出的时刻是不同的)。3个卫星发出信号在t=2.53571时刻汇聚在D,意味着D是接收信号的GPS装置的位置。从点D出发,指南针指向45度最终会到达目的地(1050,1050)。

样例输入

3 2.53571 1050.0 1050.0
-100.0 350.0 90.0 1.75
350.0 -100.0 0.0 1.75
350.0 800.0 180.0 1.75
2 2.0 1050.0 1050.0
-100.0 350.0 90.0 1.0
350.0 -100.0 0.0 1.0
0 0 0 0

样例输出

Trial 1: 45 degrees
Trial 2: Inconclusive

提示

零基础的同学可以先学习基础,教程见:  C语言教程C++教程编译器教程数据结构教程Python教程单片机教程

视频教学见视频网课

标签