騎馬修柵欄 fence 鏟雪車(snow)

2021-08-21 15:20:33 字數 2118 閱讀 2564

時間限制: 1 sec  記憶體限制: 128 mb

農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。

john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點(即兩個柵欄的交點)開始騎馬,在任意乙個頂點結束。

每乙個柵欄連線兩個頂點,頂點用1到500標號(雖然有的農場並沒有500個頂點)。乙個頂點上可連線任意多(≥1)個柵欄。所有柵欄都是連通的(也就是你可以從任意乙個柵欄到達另外的所有柵欄)。

你的程式必須輸出騎馬的路徑(用路上依次經過的頂點號碼表示)。我們如果把輸出的路徑看成是乙個500進製的數,那麼當存在多組解的情況下,輸出500進製表示法中最小的乙個 (也就是輸出第乙個數較小的,如果還有多組解,輸出第二個數較小的,等等)。 輸入資料保證至少有乙個解。

第1行:乙個整數f(1≤f≤1024),表示柵欄的數目;

第2到f+1行:每行兩個整數i,j(1≤=i,j≤500)表示這條柵欄連線i與j號頂點。

輸出應當有f+1行,每行乙個整數,依次表示路徑經過的頂點號。注意資料可能有多組解,但是只有上面題目要求的那一組解是認為正確的。

9

1 22 3

3 44 2

4 52 5

5 65 7

4 6

123

4254

657

徐不可說:簡化題意就是乙個一筆畫問題,即尤拉迴路,注意要注意此題的路徑為無向圖。

#include#include#includeusing namespace std;

const int mn = 512;

struct edge k;

int m, n;

int t[mn][mn], way[mn], d[mn], cnt = 0;

void find(int k)

}way[++cnt] = k;

}int main()

int k1 = 600, k2 = 600;

for (int i = 1; i <= n; i++)

if (k1 != 600)find(k1);

else find(k2);

for (int i = cnt; i >= 1; i--)

return 0;

}

下面是與之相似的一道題——鏟雪車。同樣可以用尤拉迴路解決。

隨著白天越來越短夜晚越來越長,我們不得不考慮剷雪問題了。整個城市所有的道路都是雙車道,因為城市預算的削減,整個城市只有1輛鏟雪車。鏟雪車只能把它開過的地方(車道)的雪鏟乾淨,無論哪兒有雪,鏟雪車都得從停放的地方出發,遊歷整個城市的街道。現在的問題是:最少要花多少時間去鏟掉所有道路上的雪呢?

輸入有多組資料,每組資料的第1行表示鏟雪車的停放座標(x,y),x,y為整數,單位為公尺。第2行為乙個數n(n<=4000)表示下面有n行,每行給出了一條街道的起點座標和終點座標,所有街道都是筆直的,且都是雙向乙個車道。鏟雪車可以在任意交叉口或任何街道的末尾任意轉向,包括轉u型彎。鏟雪車鏟雪時前進速度為20千公尺/時,不剷雪時前進速度為50千公尺/時。保證:鏟雪車從起點一定可以到達任何街道。

對於每組資料輸出鏟掉所有街道上的雪並且返回出發點的最短時間,精確到分鐘。

0 0

30 0 10000 10000

5000 -10000 5000 10000

5000 10000 10000 10000

3:55
#include#include#includeusing namespace std;

double fun(int a,int b,int c,int d)

int main()

int t = sum - 1;

double t = sum - t;

int te =floor(t * 60 + 0.5);

if(te >= 60)

cout << t << ":";

if(te < 10) cout << "0";

cout << te << endl;

} return 0;

}

1375 騎馬修柵欄 fence

農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始...

1375 騎馬修柵欄 fence

農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始...

鏟雪車 騎馬修柵欄 (尤拉路徑和尤拉迴路)

今天上午的訓練賽涉及到的,順便補一下叭。相信大家都聽說過著名的七橋問題,而尤拉迴路就是偉大的數學家尤拉為了解決七橋問題提出的。首先介紹一下基本概念 在乙個圖中,經過每條邊一次並且只經過一次的迴路被稱為尤拉迴路,路徑被稱為尤拉路徑。根據名字就可以知道,迴路是起點終點相同的,而路徑是起點終點不同的。其實...