洛谷 P2013 无线电测向
2017-10-12 18:39
113 查看
洛谷 P2013 无线电测向
题目
题目描述艘有天线定位装置的船能通过接收当地灯塔信号来确定自己的位置。每个灯塔固定在已知点上并发出特有的信号。当船检测到信号,它可通过旋转天线直到信号达到最大强度。这样就可确定自身与该灯塔的位置关系。只要接收到两个灯塔的信息,就有可能确定船当前的位置。
编程任务:通过一对灯塔信息来确定船的位置。
灯塔和船的位置被确定在一个直角坐标系内。X 轴正向指向东,Y 轴正向指向北。船的航行路线从正北开始按顺时针用度表示。北是 0°,东是 90°,南是 180°,西是 270°。灯塔与船的位置关系用相对于船的航行方向顺时针用度表示。
输入输出格式
输入格式:
文件的第一行是一个整数,表示灯塔的数目 N(N<=30)。以下 N 行,每行表示一个灯塔,为灯塔名称(名称是 20 个以下的字母),X 坐标和 Y坐标。它们都用空格隔开。
灯塔信息下面是船的信息包括三行,一行是船的方向,其余两行是所接收到的灯塔信号。
具体如下:
输入数据 数据的含义
方向 船的航行方向;
名称1 角度1 第一个灯塔信息的名称,灯塔的方位;
名称2 角度2 第二个灯塔信息的名称,灯塔的方位。
灯塔的方位为船与灯塔所在的直线与船的航行方向的夹角(从船的航行方向开始顺时针)。2 个数据用空格隔开。
输出格式:
将船的位置(精确到2位小数)。如果无法确定船的位置,应输出”NO ANSWER”(不能使用小写)。
输入输出样例
输入样例#1:
5 a 1 5 b 1 1000 c 2 4 d 51 60 e 153 79 30 e 160 d 210
输出样例#1:
160.83 123.41
题解
跟据两个灯塔朝的方向求出斜率k1,k2,如果k1≠k2,则说明船的位置可求,然后就是求两条线段的交点的问题了然而,我在判断字符串时卡了半天。。。
代码
#include<cstdio> #include<iostream> #include<cmath> #include<cstring> #define pi 3.14159265358 using namespace std; int n; double ka,kb,ax,ay,m,angle,xa,ya,xb,yb; char ch; struct string{ char w[25]; } s[35]; int x[35],y[35]; int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>s[i].w>>x[i]>>y[i]; } cin>>m;m-=90; cin>>s[0].w; for (int i=1;i<=n;i++) if (!strcmp(s[i].w,s[0].w)) {xa=x[i];ya=y[i];break;} cin>>angle;angle=180-m-angle;ka=tan(pi/180*angle); cin>>s[0].w; for (int i=1;i<=n;i++) if (!strcmp(s[i].w,s[0].w)) {xb=x[i];yb=y[i];break;} cin>>angle;angle=180-m-angle;kb=tan(pi/180*angle); if (ka==kb) {printf("NO ANSWER");return 0;} ax=(yb-ya+ka*xa-kb*xb)/(ka-kb); ay=ka*(ax-xa)+ya; printf("%.2lf %.2lf\n",ax,ay); return 0; }
相关文章推荐
- 洛谷 P1983 [NOIP2013普及组 T4] 车站分级
- 洛谷 P1969 [NOIP2013]积木大赛
- 洛谷 1967 [NOIP2013] 货车运输 最大生成树+倍增
- 2013NOIP普级组第四题--车站分级(参考洛谷题解)
- 洛谷 P3256 [JLOI2013]赛车【半平面交??一次函数互相覆盖的判断】
- 洛谷P1967 [Noip2013]货车运输
- 【洛谷3335】【ZJOI2013】蚂蚁寻路
- 2013NOIP普级组第二题--表达式的值(参考洛谷题解)
- 【洛谷】1967 [noip2013]货车运输 最小生成树+LCA
- 【洛谷P1967】【NOIP2013】货车运输
- BZOJ3172 & 洛谷3966 [Tjoi2013]单词 【fail树】
- |洛谷|NOIP2013|贪心|P1969 积木大赛
- 洛谷P1967 [NOIP2013提高组Day1T2]货车运输
- 【NOIP2013】洛谷1970 花匠
- 洛谷P1965 转圈游戏 [2013NOIP提高组 D1T1][2017年6月计划 数论04]
- 洛谷 P1967 Vijos P1843 CODE[VS] P3287 [NOIP2013 D1T3] 货车运输
- NOIP2013 D2T3 codevs 3290 洛谷 P1979 华容道 题解报告
- 洛谷 P1969 [NOIP2013 D2T1] 积木大赛
- [NOIP2013] 提高组 洛谷P1979 华容道
- [NOIP2013提高&洛谷P1966]火柴排队 题解(树状数组求逆序对)