NOIP2012模擬10 17 鐵軌

2021-09-25 00:04:38 字數 1548 閱讀 2351

description

在poppush城有乙個著名的,建於上世紀的火車站,車站的鐵路如圖所示,

每輛車都從a方向駛入,再從b方向駛出,同時他的車廂可以進行某種形式的重新組合。假設從a方向駛來的火車有n節車廂(n≤1000),分別按順序編號為1,2,3…n。負責車廂排程的工作人員需要知道能否使它以a1,a2,a3…an的順序從b方向駛出。請你給他寫乙個程式,用來判斷是否能得到指定的車廂順序。假定在進入車站之前每節車廂之間都是不連著的,並且他們可以自行移動,直到處在b方向的鐵軌上。另外假定車站裡可以停放任意多節的車廂。但是一旦一節車廂進入車站,他就不能再回到a方向的鐵軌上了,並且一旦他進入b方向的鐵軌後,他就不能再回到車站

input

輸入檔名為 rails . in。

輸入檔案包含很多段,每一段是很多行。除了最後一段外,每一段都定義了一輛火車及很多所需要的重組順序。每一段的第一行是上面所說的整數n,接下來的每一行都包含n個整數,每個表示要求的駛出順序,每段的最後一行是數字0,資料保證不會有超過10次詢問。最後一段只包含數字0.

output

輸出檔名為rails.out。

輸出檔案中的每一行都和輸入檔案中的乙個描述置換的行相對應,並且用yes表示可以把它們編排成所需的順序,否則用no表示。另外,用乙個空行表示輸入檔案的對應短的結束。輸入檔案中最後的空段不需要在輸出檔案中有內容相對應。

sample input

51 2 3 4 5

5 4 1 2 306

6 5 4 3 2 100

sample output

yesno

yesdata constraint

hint

對於50%的資料,n<=100,且資料不會超過5組;

對於100%的資料,n<=1000,且資料不會超過10組..

...分析

在中轉站c中,車廂符合後進先出的原則,因此是乙個棧。

假設我們已經處理了前i-1節從b方向駛出的車廂,我們現在要讓a[i]駛出。

若a[i]不在車站c中,我們就讓若干車廂從a方向駛入車站c,直到a[i]駛入,再將它從b方向駛出;

若a[i]在車站c中,如果它是車站c中停在最前面的,則將它從b方向駛出,否則原問題無解。..

...程式:

#include#include#includeusing namespace std;

int n,a[2000],stack[2000];

int main()

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

scanf("%d",&a[i]);

int top=0,bh=1,bz=0;

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

if (stack[top]==a[i]) top--; else

}if (bz==0) cout<

} }return 0;

}

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 x x.第...

NOIP2012模擬10 25 剪草

首先分析的出兩個結論,1 每棵草最多隻剪一次 2 按照生長速度,先剪小的,再剪大的。不難證明,略。那麼把小草按生長速度從大到小排個序後,設f i,j 表示,在倒數第i個時刻,已經處理了j棵草時的最小高度和。轉移為f i j min f i j 1 f i 1 j 1 a j g a ns i 1 a...

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 xx.50...