洛谷 P2625 豪華遊輪

2021-07-23 03:34:11 字數 1235 閱讀 3230

題目描述

有一條豪華遊輪(其實就是條小木船),這種船可以執行4種指令:

right x : 其中x是乙個1到719的整數,這個命令使得船順時針轉動x度。

left x : 其中x是乙個1到719的整數,這個命令使得船逆時針轉動x度。 forward x : 其中x是乙個整數(1到1000),使得船向正前方前進x的距離。

backward x : 其中x是乙個整數(1到1000),使得船向正後方前進x的距離。

隨意的寫出了n個命令,找出乙個種排列命令的方法,使得船最終到達的位置距離起點盡可能的遠。

輸入輸出格式

輸入格式:

第一行乙個整數n(1 <= n <= 50),表示給出的命令數。

接下來n行,每行表示乙個命令。

輸出格式:

乙個浮點數,能夠走的最遠的距離,四捨五入到6位小數。

輸入輸出樣例

輸入樣例#1:

3 forward 100

backward 100

left 90

輸出樣例#1:

141.421356

把正著走的和倒著走的累加,通過乙個揹包,算出角度距180。(此圈在右上方)最遠的。通過餘弦定理計算。

#include

#include

#include

#include

using

namespace

std;

const

double pi=3.1415926535;

int n,sf,sb,p,ang[55];

double ans;

bool f[105][405];

int main()

f[0][0]=1;

for(int i=1;i<=ang[0];i++)

for(int j=0;j<360;j++)

if(f[i-1][j])

f[i][j]=1,f[i][(j+ang[i]+720)%360]=1;

p=180;

for(int i=0;i<360;i++)

if(f[ang[0]][i])

p=min(p,abs(i-180));

ans=sqrt(sf*sf+sb*sb+2*sb*sf*cos(p*pi/180));

printf("%.6f\n",ans);

return

0;}

洛谷 P2625 豪華遊輪

題目描述 有一條豪華遊輪 其實就是條小木船 這種船可以執行4種指令 right x 其中x是乙個1到719的整數,這個命令使得船順時針轉動x度。left x 其中x是乙個1到719的整數,這個命令使得船逆時針轉動x度。forward x 其中x是乙個整數 1到1000 使得船向正前方前進x的距離。b...

洛谷P2625 豪華遊輪

有一條豪華遊輪 其實就是條小木船 這種船可以執行4種指令 right x 其中x是乙個1到719的整數,這個命令使得船順時針轉動x度。left x 其中x是乙個1到719的整數,這個命令使得船逆時針轉動x度。forward x 其中x是乙個整數 1到1000 使得船向正前方前進x的距離。backwa...

P2625 豪華遊輪 揹包 dp ,數學

賊有意思的乙個題目。可以發現阻止我們走的更遠的就是那些需要反向走的路程。然後發現當角度越接近 180 circ 對我們最終的答案則更優。所以先是乙個揹包把可以達到的角度處理一下,然後再直接算就好了。卡精度。include define pi 3.141592653589 using namespac...