網教30 過橋

2021-07-23 03:16:13 字數 1249 閱讀 1445

題目描述:

小a有x隻羊和y只狼,現在,他需要通過一座橋。由於橋面很窄,橋每次只允許通過小a和n只動物。小a很愛動物,所以他每次通過橋時都必須有乙隻動物陪著他,否則他會很寂寞。並且不論是在牆上或者是在橋的兩頭,一旦羊的數量少於狼的數量,狼就會開始吃羊。為了不讓羊被吃掉,又要讓所有動物和小a自己都通過橋,小a至少要過橋多少次?

輸入:

多組資料,每一組資料報含三個整數x, y, n (0≤ x, y,n ≤ 200)。

輸出:

對於每組資料,如果能順利順利過橋並且不損失一頭羊,則輸出需要的最少過橋次數。否則,輸出-1。

測試輸入

期待的輸出

時間限制

記憶體限制

額外程序

測試用例 1

以文字方式顯示

2↵3 3 2↵

33 33 3↵

以文字方式顯示

11↵-1↵ 1秒

64m0

題解:(據說這又是乙個數論題)

按照以往(暫時已知)的套路,數論題總是可以變成bfs,所以我就用bfs試了試……

開兩個結構陣列,分別存在河的一邊和另一邊時候的羊數、狼數、走的次數。然後乙個vis[200][200][2]三維分別存羊數、狼數、河的哪邊。每次操作的時候是最少帶乙隻動物,最多帶n只,在河的兩邊和橋上都不能出現狼數》羊數的情況。對於符合題意的情況,就加入佇列,並標記vis。一直bfs搜尋,只到所有的動物都到了對岸,或者front思路不難,一點一點寫就能寫出來。**量(至少是我的**量)較大,所以寫著需要細心。細節的地方容易出千奇百怪的錯,所以還是要注意細節。

ac**:

#include#includestruct node  

a[400005], b[400005];

int vis[205][205][2];

int x, y, n;

int bfs()

if (a[front].index % 2 == 0)

k = 0;

else

k = 1;

if (k == 0)

} }

else

} }

front++;

} return -1;

} int main()

} return 0;

}

網教 7 蜜汁序列

題目描述 傳說中有一種蜜汁序列特別甜,所以愛吃甜的強渣學長特別喜歡這種序列。蜜汁序列的定義如下 對於乙個長度為n的序列a1,an,如果這個序列的n個字首和全部非負,即若a1 0,a1 a2 0,a1 a2 an 0,則稱a序列是蜜汁序列。顯然一些蜜汁序列可以分成更多的蜜汁序列,例如1 2這個蜜汁序列...

網教17 有吃的!

婦添小有乙個很厲害的技能 發現吃的!如果有好吃的東西,不論多遠,只要一聞就能知道在 這天他剛剛在程設rejudge完,忽然鼻子一抽 有吃的!他決定馬上趕去吃這麼好吃的東西。語文男為了考驗婦添小的品味,在路中間放了很多饅頭,看他會不會餓的先吃饅頭。婦添小當然不會讓這種雕蟲小計得逞!為了保持自己的品味,...

網教20 猜 丁 殼!

石頭 剪刀 布 也叫作 猜丁殼 是猜拳 的一種。遊戲規則中,石頭克剪刀,剪刀克布,布克石頭。紅哥哥聽聞程設的同學們都是擅長玩猜丁殼的高手,於是他決定舉辦一場主題為 猜丁殼 的遊戲party。想要參加party,你必須cospaly為石頭 剪刀 布中的一種。紅哥哥為了增加遊戲難度,他限制了party中...