題目:
郵票數可以顯示最大連線自然數的問題,看到這道題目第乙個想到的是整數劃分問題。但是又很不一樣。第一它不用考慮這個整數的所有劃分情況,而是只要考慮整數是否可以被<=k個郵票表示。
最簡單的想法,用stamp【n】陣列表示郵票,然後遞增考慮1到k*stamp【n】範圍的自然數的劃分,直到不能劃分為止。為了加速我們可以對郵票面值先做一下排序,但是還是超時了。**如下:
很可惜的是,在test11的時候,有一點小的超時。
但是仔細考慮一下這道題目,發現這道題實際上可以用動態規劃的思想來解決。
動態規劃的題目,用f[i]表示得到i面值所需要的最少郵票個數,value[j](j=1..stamps)表示每個郵票的面值,可得以下轉移方程:
f[i]=min ( f[i-value[j]
] + 1
)(i-value[j]>=0 j=1..stamps)
初始狀態:f[
0]=0;f[i]=infinite;
如果計算中間某個f[i]大於了最大可以使用的郵票數量,則退出迴圈,輸出i-1即為解。----引自usaco解答
這樣子的話,這道題目就不難解決了。**如下:
執行時,順利通過了,只不過記憶體翻了一倍。
這道題上usaco上,還提供了bfs演算法,速度更快。大家可以到官網上去好好看一下。
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演算法系列 討論篇
這道題目來自於我同學的口述,大意是這樣,有n個房間,編號為1,2,3 n,裡面有1個寵物,然後你每次只能開啟乙個房間,如果沒有找到,寵物必須隨機向左向右移動一次,問你如何以最快的開門方式找到寵物。eg,有3個房間,那麼你只要至多開啟中間的房間兩次就可以找到寵物了。分析 用n個位來表示n個房間,0 代...