乙個座標系上有n
nn個點n−1
n-1n−
1條邊,有兩種移動方式:
經過一條邊從乙個點到達另乙個點,耗時為這條邊長度÷
v\div v
÷v從乙個點垂直跳下到達正下方的另乙個點。耗時為((y
j−yi
)×2÷
g)
\sqrt
((yj−
yi)
×2÷g
)(注意:g
gg取10
1010
) 求從點1
11到點n
nn的最小時間。
對於移動方式1
11,直接利用勾股求出兩點之間的距離,然後建一條雙向邊。
對於移動方式2
22,就列舉所有的點,判斷他們是否滿足xi=
xi
x_i=x_i
xi=xi
且yi
>yj
y_i>y_j
yi>yj
,如果滿足,那麼就在i
ii到j
jj中連一條單向邊
。
然後跑個最短路就可以了。
#include
#include
#include
#include
#include
#define n 200
using
namespace std;
int n,tot,head[n]
;double v,dis[n]
;bool vis[n]
;struct edge
e[n*2]
;struct node
a[n]
;double
ask_dis
(double x1,
double y1,
double x2,
double y2)
//勾股求距離
void
add1
(int from,
int to)
//移動方式1
void
add2
(int from,
int to,
double dis)
//移動方式2
void
spfa()
queue<
int> q;
q.push(1
);dis[1]
=0.0
; vis[1]
=1;while
(q.size()
)}}}
}int
main()
for(
int i=
1;i<=n;i++
)for
(int j=
1;j<=n;j++)if
(i!=j)
if(a[i]
.x==a[j]
.x&&a[i]
.y>a[j]
.y)add2
(i,j,
sqrt
((a[i]
.y-a[j]
.y)*
2.0/
10.0))
;spfa()
;printf
("%0.2lf"
,dis[n]);
return0;
}
RQNOJ 篝火晚會
題目描述 佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有n個同學,編號從1到n。一開始,同學們按照1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望相鄰的同學。如何下命令調整同學的次序,形成新的乙...
其他 RQNOJ 排考場
期中考之前,總要排一下試場。張校長為此心煩 每個試場擁有的桌椅數不同。為了排試場,不免有些桌子要被移到別的試場去。為了減少移動量,張校長決定再開m個試場 m盡量要小,這是人之常情 將每個試場多餘的桌椅放入新試場內。由於教育局規定 每個試場的桌椅數必須相同。張校長犯難了,於是他找到學noip的你,希望...
其他 RQNOJ 誰拿了獎學金
期中考考完了,總要排排名次。該校有個特殊的規定 前m m 60 名學生有獎學金可以拿。面對那批堆積如山的試卷,王主任茫然無措,於是他來向懂noip的你來求救,希望你能幫助他。注 該校的名次的排列方式為 先排平均分,若平均分相同,則計算方差,方差小的學生排在前面,若方差也相同,則按考號的先後排列 考號...