NOIP2016模擬賽No 1 最小密度路徑

2021-07-14 17:58:33 字數 1531 閱讀 2406

題目描述

這次的任務很簡單,給出了一張有

n 個點

m條邊的加權有向無環圖,接下來有q 

個詢問,每個詢問包括2 

個節點x

和y,要求算出從

x 到

y的一條路徑,使得密度最小(密度的定義為,路徑上邊的權值和除以邊的數量)。

輸入

第一行包括2 

個整數n和

m 。以下m

行,每行三個數字a、

b、w ,表示從a 

到b有一條權值為

w 的有向邊。

再下一行有乙個整數q 

。以下q 

行,每行乙個詢問x和

y ,如題意所訴。

輸出

對於每個詢問輸出一行,表示該詢問的最小密度路徑的密度(保留3 

位小數),如果不存在這麼一條路徑輸出「o

mg!」

(不含引號)。

樣例輸入3

3 1  3

2 1 

6 23 

6  2

3 2 

樣例輸出

5.000 

5.500 

提示對於

60%的資料,有1≤

n≤10 

,1≤m

≤100

,1≤w≤

1000

,1≤q≤

1000

;對於100% 

的資料,有1≤

n≤50 

,1≤m

≤1000

,1≤w≤

100000

,1≤q≤

100000

題解

有一句經典的話:如果狀態有後效性,就加一維使它沒有後效性。

看到上面那句話應該就可以懂怎麼做了……如果不懂,看下一句……

加一維表示經過的邊數,跑最短路……sp

fa,fl

oyd ,什麼什麼的隨便亂跑跑就好 f[

i][j

][k]

表示從i 

到j 經過

k 條邊的最短路

**

#include

#include

#define n 55

#define for(i,a,b) for (int i=a;i<=b;i++)

int n,m,q,u,v,f[n][n][n],c[n][n],p;

inline

void floyd()

int main()

if (flag) printf("%.3lf\n",ans);

else

puts("omg!");

}}

NOIP2016模擬賽No 1 牛宮

題目描述a p 神牛準備給自己蓋一座很華麗的宮殿。於是,他看中了一塊n m 的矩形空地。空地中每個格仔都有自己的海拔高度。ap 想讓他的宮殿的平均海拔在海平面之上 假設海平面的高度是0 平均數都會算吧?而且,ap 希望他的宮殿盡量大,能夠容納更多的人來膜拜他。請問ap 的宮殿最後會有多大?輸入 第一...

NOIP2016複賽模擬賽 朋友

問題描述 mxy 即將前往新世界。在前往新世界的過程中,ta 遇見了兩種人。一種是只和lowb 做朋友,即當且僅當自己 的能力值大於對方時他們會成為朋友,另一種是大神我們做朋友,即當且僅當自己的能力 值小於對方時他們會成為朋友。現在告訴你兩種人的能力值。請你計算一共有多少對友好關係。輸入 每組測試資...

NOIP2016模擬 JackMa 貪心

問題描述 mr he 因討厭?手動和諧 而徹底放棄網購,他的日常用品都要到商場去購買,而且必須付現金。但是現 金購買,經常會遇到找零的問題,那麼現在請你幫助他解決這樣乙個問題 現在 mr he 手上有 n 種不同面值的硬幣,每種硬幣有無限多個。為了方便購物,他希望帶盡量 少的硬幣,但是要能組合出 1...