池塘中有
n 片荷葉恰好圍成了乙個凸多邊形,有乙隻小青蛙恰好站在
1號荷葉上,小青蛙想通過最短的路程遍歷所有的荷葉(經過乙個荷葉一次且僅一次),小青蛙可以從一片荷葉上跳到另外任意一片荷葉上。
第一行為整數
n ,荷葉的數量。
接下來
n行,每行兩個實數,為
n 個多邊形的頂點座標,按照順時針方向給出。
保證不會爆 do
uble
。 遍歷所有荷葉最短路程,請保留
3 位小數。
450.0 1.0
5.0 1.0
0.0 0.0
45.0 0.0
50.211對於所有資料 ,
0720。 用
f[i]
[j][
0]表示從
i 出發,遍歷 i~
j 的最短距離,f[
i][j
][1]
表示從
j 出發,遍歷 i~
j 的最短距離。
顯然,最短路徑是不會相交的。
所以 f[i
][j]
[0]=
min(
f[i+
1][j
][0]
+dis
[i][
i+1]
,f[i
+1][
j][1
],di
s[i]
[j])
f[i]
[j][
1]=m
in(f
[i][
j−1]
[1]+
dis[
j][j
−1],
f[i]
[j−1
][0]
+dis
[j][
i])
#include
#include
#include
using
namespace
std;
double f[1000][1000][2];
double x[1000],y[1000];
double dis[1000][1000];
int n;
int main()
printf("%.3lf",f[1][n][0]);
return
0;}
青蛙的煩惱(dp好題)
有n片荷葉正好在一凸多邊形頂點上 有乙隻小青蛙恰好站在1號荷葉的點 小青蛙可以從一片荷葉上跳到另外任意一片荷葉上 給出n個點的座標n 800 求小青蛙想通過最短的路程遍歷所有的荷葉一次且僅一次的最短路徑。這題如果沒有凸多邊形的性質,就是裸的tsp問題,資料範圍沒法做的很大,用dp做也最多做到n 20...
動態規劃dp 青蛙的煩惱
青蛙的煩惱 frog 原文 題目描述 池塘中有 n 片荷葉恰好圍成了乙個凸多邊形,有乙隻小青蛙恰好站在 1 號荷葉上,小青蛙想通過 最短的路程遍歷所有的荷葉 經過乙個荷葉一次且僅一次 小青蛙可以從一片荷葉上跳到另外任意一 片荷葉上。輸入格式 第一行為整數 n,荷葉的數量。接下來 n 行,每行兩個實數...
LSGDOJ 1852 青蛙的煩惱 DP
池塘中有n片荷葉恰好圍成了乙個凸多邊形,有乙隻小青蛙恰好站在1號荷葉上,小青蛙想通過最短的路程遍歷所有的荷葉 經過乙個荷葉一次且僅一次 小青蛙可以從一片荷葉上跳到另外任意一片荷葉上。第一行為整數n,荷葉的數量。接下來n行,每行兩個實數,為n個多邊形的頂點座標,按照順時針方向給出。保證不會爆doubl...