北郵oj 最遠距離

2021-10-20 17:57:16 字數 1549 閱讀 9936

如圖所示,可以將所有的操作歸結為:

第一步:將所有的forward操作一併做完,到達途中n軸上的一點。

第二步:將所有的left轉化為(360 - left)%360,即將所有的轉向操作都變成右轉,然後挑選這些右轉操作,最終目的是使得min夾角盡可能大,讓forward與backward夾角盡可能大,兩邊不變,兩邊夾角越大,第三邊(output)越大。

第三步:將所有的backward操作一併做完,到達終點。

第四步:將第二步遺留的所有轉向操作做完,原地轉向,並不改變位置。

第五步:計算output,並輸出。

數學公式:output = a∗a

+b∗b

−2∗a

∗b∗c

os(a

,b)\sqrt

a∗a+b∗

b−2∗

a∗b∗

cos(

a,b)

#include

#include

#include

#define pi acos(-1.0)

using

namespace std;

intmain()

else

if(input[0]

=='b'

)else

else

num ++;}

}int flag[

360]

;int reach[

360]

;memset

(flag,0,

sizeof

(flag));

flag[0]

=1;for

(int i =

0; i < num; i++)}

}int min =

180;

for(

int i =

0; i <

360; i++)}

}printf

("%.3lf\n"

,sqrt((

double

)forward*forward+

(double

)backward*backward-2*

(double

)forward*backward*

cos(

(double)(

180- min)

/180.0

*pi)))

;//一定將這三個變數先轉為double型別,不然直接計算最後轉double會答案錯誤

}return0;

}

北郵oj 最遠距離

題目 把所有能轉出的角度都列舉出來,然後找最接近180度的。另外計算浮點數一定要注意精讀,把int型轉為double型再計算!我找了一下午發現是因為這個沒有ac!include include define pi acos 1.0 using namespace std double dis dou...

最遠距離 北郵2012網研院複試上機題

記憶體限制 65536 kb 正義的夥伴褋祈和葬儀社的機械人fuyuneru正在被 的ghq部隊追殺。眼看著快要逃不掉了,祈就把重要的東西塞到了機械人體內,讓它先跑,自己吸引火力。假設fuyuneru帶上東西開始逃跑時所處的點為原點,朝向為正北。操縱fuyuneru的指令有如下四種 right x ...

樹上最遠距離練習

從二叉樹的節點a出發,可以向上或者向下走,但沿途的節點只能經過一次,當到達節點b時,路徑上的節點數叫作a到b的距離。對於給定的一棵二叉樹,求整棵樹上節點間的最大距離。給定乙個二叉樹的頭結點root,請返回最大距離。保證點數大於等於2小於等於500.對於給定的節點root,最遠距離只可能來自以下三種情...