Wikioi 1253 超級市場 疑難題

2021-06-22 01:53:19 字數 1272 閱讀 4109

某人喜歡按照自己的規則去市場買菜,他每天都列乙個買菜的清單,自由市場的菜碼放也有乙個順序,該人有乙個特點,就是按順序買菜,從不走回頭路,當然,她希望能花最好的錢買到所有的菜,你能幫幫他嗎?

輸入輸出資料如下圖:

輸入檔案的第一行為兩個整數m,n, m (1 £ m £ 100)時她的買選單,n(1 £ n £100,000) 表示自由市場的所有選單. 

第二行為 m 整數,其中xi (1 £xi £ 100,000, 1 £ i £ m)表示她的選單中的第i號菜. 接下來的n 行表示自由市場按順序碼放的菜,其中每行兩個數,整數 k 和實數 p 分別表示編號為k

的菜價為p (1 £ k £ 100,000). 

如果他可以買到所有的菜,則輸出付出的最小價值,否則輸出「impossible」

4 8

1 1 2 20

2 0.29

1 0.30

20 0.15

1 1.00

5 0.05

2 10.00

20 20.00

20 10.00

21.30

如描述
題目思路

這個題的題解1l那貨真***犯賤!!!他的題解是錯的,不管是開二維dp陣列還是一維的,在dp時一定要注意dp方向是從大到小(本蒟蒻還不知道為什麼是這樣,但是據群裡的神犇說這樣dp時可以覆蓋掉原狀態),無論如何,從小到大dp是錯的,這是事實。開二維陣列可能好理解一些,不過記憶體吃緊,開一維陣列就不存在這個問題了。

下面的**是參考別人一維做的,我的二維的好像就是dp方向問題爆零了

#include #include #define maxmarket 100010

#define maxmy 110

#define inf 1000000.0

double f[maxmy]; //f[i]=買選單前i個菜的最小花費

double min(double a,double b)

if(f[m]>=inf) printf("impossible");

else printf("%.2lf\n",f[m]);

return 0;

}

wikioi 能量項鍊

這是石子歸併的加強版,基本就是分治法的dp。但是有了個環,因為任何乙個位置都可開始,所以就建立2 n的陣列,然後對可能的區間遍歷一次,就是o n 3 的複雜度。中間錯誤的地方有 把dp i,j 錯誤寫成f i j k不能等於i,也不能等於j 把a i a k a j 錯寫成i k j include...

wikioi 裝箱問題

01揹包問題是最經典的動態規劃之一,這道題目甚至是這其中還簡單的一種,因為價值就是本身的重量了。本來比如,w是總重量限制,v是每個的價值。但一開始我都有點忘了,查詢了一下又勾起了回憶。1.它把總重量從1到w作為狀態,對初學者並不是很直觀的。但dp本來就是空間換時間的演算法,裡面經常以整數做狀態,數目...

1253 抓住那頭牛

農夫知道一頭牛的位置,想要抓住它。農夫和牛都位於數軸上,農夫起始位於點n 0 n 100000 牛位於點k 0 k 100000 農夫有兩種移動方式 1 從x 移動到x 1或x 1 每次移動花費一分鐘 2 從x移動到2 x 每次移動花費一分鐘 假設牛沒有意識到農夫的行動,站在原地不動。農夫最少要花多...