Prob_Solve 板


※ 引述《glob (TOEFL&GRE GOGOGO)》之铭言: : 想法: : 因为船的航行角度是从北方(0度)开始计算,顺时针方向为正 : 给一方向角 a, 速度v : 令船的航线 斜率的两个分量为(sin(a),cos(a)) : 假设船座标(x,y) : 对於t1时间的 beacon 1 (beacon1.x, beacon1.y), 其相对船航行角度 angle 1 : 我可以找出船的位置和 beacon连线的直线方程式 => : y - beacon1.y = cot(a + angle 1)*(x-beacon1.x); --------- 1) : 经过 t2-t1 时间: : 船走到了 (x',y') = (x+v*sin(a)(t2-t1), y+v*cos(a)*(t2-t1) ) : 对於t2时间的 beacon 2 (beacon2.x, beacon2.y), angle 2 : y'- beacon2.y = cot(a + angle 2)*(x'-beacon2.x); ------- 2) : 把 1) 2)联立得解 请问这样的想法对吗? 囧>>> : 感谢回答 = ="" 囧 找不出错来... 请问有大大可以帮我看看 code吗? 实在是头大..Orz.. 一些地方写了注解 感谢 ==... 题目:http://acm.uva.es/p/v2/217.html 有一个有向天线接收器的船可以透过灯塔确定它自身的位置。 每一个灯塔的位置都是已知的,并且向一个固定的方向发射信号。 当一艘船检测到信号的时候,它旋转天线接收器的直到信号的强度最大。 这样我们就得到了一个相对于某个灯塔的角度。 给定两次利用灯塔得到的讯息(时间、相对角度、灯塔位置), 通常我们可以确定船的绝对位置。 我们已知的数值是︰船行驶的方向和速度、灯塔的位置、 还有就是两次利用灯塔所得到的讯息,注意天线不能判别灯塔是在哪个方向, 如果读到的相对角度是90 degs,那可能灯塔在90度或者是270度的角度上。 #include <iostream> #include <stdlib.h> #include <string> #include <math.h> #include <stdio.h> #include <iomanip> using namespace std; // (name,x,y):=beacon(x,y) string name[31]; double x[31], y[31]; // a:=course, v:=velocity double a,v; // index:= num of beacon, deal:=num of data // t1,b1:= time of beacon1, index of beacon1 // t2,b2:= time of beacon2, index of beacon2 int index, deal,t1,t2,b1,b2; // m1,m2:= slope of line1, slope of line2 // k1,k2:= distance of movement in x_axis and y_axis between (t2-t1) // x_v,y_v:= final position of ship // a1,a2:= angle1, angle 2 double m1,m2,k1,k2,a1,a2,x_v,y_v; bool bx,by; int Scenario=1; double d2,d1; void fail() { cout<<"Scenario "<<Scenario<<" : "<<"Position cannot be determined"<<endl; Scenario++; } void succeed() { cout<<"Scenario "<<Scenario<<" : "<<"Position is "; printf("(%.2lf, %.2lf)\n",x_v,y_v); Scenario++; } void reset() { k1=v*sin(2*acos(0.)*a/180)*(t2-t1); k2=v*cos(2*acos(0.)*a/180)*(t2-t1); x_v=0.,y_v=0.; d1=a+a1; d2=a+a2; //将d1,d2的范围调整到[0,360) while(d1>=360.){d1-=360.;} while(d2>=360.){d2-=360.;} bx=false,by=false; } /*检查两直线是否平行,若平行则无解 */ bool cross() { if(abs(d1-d2)==0. || abs(d1-d2)==180.) return true; else return false; } /*计算第 1条直线方程式*/ void test1() { if(d1==90.||d1==270.){ y_v=y[b1]; by=true; }else if(d1==0. ||d1==180.){ x_v=x[b1]; bx=true; }else m1=cos(2*acos(0.)*d1/180.)/sin(2*acos(0.)*d1/180.); } /*计算第 2条直线方程式*/ void test2() { if(d2==90.||d2==270.){ y_v=y[b2]; if(bx==true) x_v+=k1; else x_v = (y_v-k2-y[b1])/m1+x[b1] +k1; }else if(d2==0.||d2==180.){ x_v=x[b2]; if(by==true) y_v+=k2; else y_v=m1*(x_v-k1-x[b1])+y[b1]+k2; }else{ m2=cos(2*acos(0.)*d2/180.)/sin(2*acos(0.)*d2/180.); if(bx==true){ x_v+=k1; y_v=m2*(x_v-x[b2])+y[b2]; }else if(by==true){ y_v+=k2; x_v =(y_v-y[b2])/m2+x[b2]; }else{ x_v =(m2*x[b2]-m1*k1-m1*x[b1]+k2+y[b1]-y[b2])/(m2-m1); y_v = m2*(x_v-x[b2])+y[b2]; } } succeed(); } void cal() { reset(); if(cross()) { fail(); }else{ test1(); test2(); } } void find(string s,int *a) { int i=1; while( name[i].compare(s) != 0 ){i++;} *a = i; } void read() { for(int i=1;i<=index;i++){ cin>>name[i]>>x[i]>>y[i]; } cin>>deal; for(int i=1;i<=deal;i++){ string bea1,bea2; cin>>a>>v; cin>>t1>>bea1>>a1; cin>>t2>>bea2>>a2; find(bea1,&b1); find(bea2,&b2); cal(); } } int main(int argc, char *argv[]) { while((cin>>index)){ read(); } system("PAUSE"); return 0; } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.176.168 ※ 编辑: glob 来自: 61.230.176.168 (04/28 22:54) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.176.168 ※ 编辑: glob 来自: 61.230.176.168 (04/28 23:12)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP