題目描述:
小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中...