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

2021-08-21 09:17:36 字數 1838 閱讀 5475

記憶體限制 65536 kb

正義的夥伴褋祈和葬儀社的機械人fuyuneru正在被**的ghq部隊追殺。眼看著快要逃不掉了,祈就把重要的東西塞到了機械人體內,讓它先跑,自己吸引火力。

假設fuyuneru帶上東西開始逃跑時所處的點為原點,朝向為正北。操縱fuyuneru的指令有如下四種:

right x: x是1-359之間的整數,fuyuneru的前進方向順時針轉x度。

left x: x是1-359之間的整數,fuyuneru的前進方向逆時針轉x度。

forward x: x是整數(0<=x<=1000),fuyuneru向當前朝向前進x公尺。

backward x: x是整數(0<=x<=1000),fuyuneru向當前朝向後退x公尺。

現在祈嚮fuyuneru體內輸入了n(1<=n<=50)個這樣的指令。可是由於此前fuyuneru被ghq部隊擊中,它出了一點小問題:這n個指令執行的順序是不確定的。

問:fuyuneru最遠可能逃出多遠?

即,fuyuneru在執行完n條指令之後,距離原點最遠的可能距離是多少?

第一行是乙個整數t,代表測試資料有t組。

每組測試資料中,第一行是乙個整數n,代表指令有n條;

隨後緊跟n行,每一行代表乙個指令(格式保證是上述四種中的一種,資料保證合法)

對於每組資料,輸出一行:最遠的可能逃亡距離,精確到小數點後3位。

33

forward

100backward

100left

90

4left

45

forward

100right

45

forward

1006

left

10

forward

40right

30

left

10

backward

4forward

4

141.421

200.000

40.585

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1.0)

using

namespace

std;

double

dis(double a,double b,double ang)

intmain

()

}

multiset

<

int>::iterator it;

vis[

0]=1;

for(it=turn.begin();it!=turn.end();it++)}}

mina=

180;

//防止沒有旋轉指令

for(i=

0;i<

360;i++)

if(vis[i])

if(abs(

180-i)

mina=

abs(

180-i);

//printf("mina:%d\n",mina);

printf(

"%.3lf\n",dis(up,down,

180-mina));

}return

0;

}

北郵oj 最遠距離

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

北郵oj 最遠距離

如圖所示,可以將所有的操作歸結為 第一步 將所有的forward操作一併做完,到達途中n軸上的一點。第二步 將所有的left轉化為 360 left 360,即將所有的轉向操作都變成右轉,然後挑選這些右轉操作,最終目的是使得min夾角盡可能大,讓forward與backward夾角盡可能大,兩邊不變...

2012北郵網研院上機題

a 列印字串 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 老師有乙個問題想考考mabo,但是mabo不會,所以想請你來幫幫忙。問題如下 給一串字串,統計其中某個字元的個數。輸入格式 首先輸入乙個整數t,表示一共有t組資料 0 t 10。接下來每行乙個字母x x為 a z 或者 ...