USACO演算法系列七 stamps

2021-09-30 08:26:14 字數 659 閱讀 5080

題目:

郵票數可以顯示最大連線自然數的問題,看到這道題目第乙個想到的是整數劃分問題。但是又很不一樣。第一它不用考慮這個整數的所有劃分情況,而是只要考慮整數是否可以被<=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 代...