這道題目來自於我同學的口述,大意是這樣,有n個房間,編號為1,2,3……n,裡面有1個寵物,然後你每次只能開啟乙個房間,如果沒有找到,寵物必須隨機向左向右移動一次,問你如何以最快的開門方式找到寵物。
eg,有3個房間,那麼你只要至多開啟中間的房間兩次就可以找到寵物了。
分析:用n個位來表示n個房間,0:代表有寵物,1:代表沒有寵物。則當n=3時,寵物的初始狀態可能為
1)100
2)010
3)001
你開啟第二個房間一次,如果沒有找到寵物,剩下兩種狀態,100,001,寵物移動,只剩下狀態010,因此只需要再次開啟房間2就可以找到寵物了。
當n=4時,初始狀態為1000 0100 0010 0001。開啟房間2,可以刪除第二種可能性,剩下1000 0010 0001三種狀態,寵物移動得到新的狀態為0100 0010 0001。此時如果開啟房間2,剩下0010 0001兩種狀態,寵物移動以後,仍然有0100 0010 0001三種狀態。進入死迴圈狀態,所以應該開啟房間三,此時寵物移動以後狀態為1000 0010,然後接著開啟房間3,狀態僅剩下0100,寵物一定在第二個房間。共需4次。
當n=5時,使用同樣方法,依次開啟2,3,4,4,3,2房間就可以找到寵物了。共需六次。
因此,至多只需要2*(n-2)次就可以找到寵物了,方式為依次開啟2,3,4……n-1,n-1,n-2,……3,2房間。
USACO演算法系列十四 fence
題目 http www.nocow.cn index.php translate usaco fence 看完這道題目的第一想法就是,遍歷所有的邊,而且每一條邊的經過次數只能一次。是離散數學裡面的圖論的尤拉通路問題,在這裡充分體現了數學的重要性。定理 無向圖g有尤拉通路的充分必要條件是g為連通圖,並...
USACO演算法系列十六 續
題目 http www.nocow.cn index.php translate usaco camelot 昨天晚上寫了乙個晚上的這道題,各種邊界條件和意外情況。看著自己寫的600多行 和一連串的test ok.心裡特別有成就感,但是看了別人寫的 80幾行,就發現了實力的差距。先說說自己的想法吧,...
USACO演算法系列七 stamps
題目 郵票數可以顯示最大連線自然數的問題,看到這道題目第乙個想到的是整數劃分問題。但是又很不一樣。第一它不用考慮這個整數的所有劃分情況,而是只要考慮整數是否可以被 k個郵票表示。最簡單的想法,用stamp n 陣列表示郵票,然後遞增考慮1到k stamp n 範圍的自然數的劃分,直到不能劃分為止。為...