題目描述
有一條豪華遊輪(其實就是條小木船),這種船可以執行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...