RQNOJ86 智捅馬蜂窩 最短路

2021-08-30 11:01:08 字數 1710 閱讀 5836

乙個座標系上有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的你來求救,希望你能幫助他。注 該校的名次的排列方式為 先排平均分,若平均分相同,則計算方差,方差小的學生排在前面,若方差也相同,則按考號的先後排列 考號...