USACO DEC09 電視遊戲問題

2021-10-09 14:36:54 字數 3663 閱讀 1416

農夫約翰的奶牛們遊戲成癮!本來fj是想要按照陶叫獸的做法拿她們去電擊戒癮的,可是後來他發現奶牛們玩遊戲之後比原先產更多的奶。很明顯,這是因為滿足的牛會產更多的奶。

但是,奶牛們在哪個才是最好的遊戲平台這個問題上產生了巨大的分歧。乙隻奶牛想要買一台xbox 360來跑《光暈3》;另外乙隻奶牛想要一台任天堂wii來跑《任天堂明星大亂鬥x》;第三隻奶牛想要在playstation 3上面玩《潛龍諜影4》,順便還能看某些高畫質的日本電影。

fj想要在給定的預算內購入一些遊戲平台和一些遊戲,使他的奶牛們生產最多的奶牛以養育最多的孩子。

fj研究了n

nn(1 <= n

nn<= 50)種遊戲平台,每一種遊戲平台的**是p

ip_i

pi​(1 <= p

ip_i

pi​ <= 1000),並且每一種遊戲平台有g

ig_i

gi​(1 <= g

ig_i

gi​<= 10)個只能在這種平台上執行的遊戲。很明顯,奶牛必須先買進一種遊戲平台,才能買進在這種遊戲平台上執行的遊戲。每乙個遊戲有乙個遊戲的**gpj

gp_j

gpj​

(1 <= gpj

gp_j

gpj​

<= 100)並且有乙個產出值pvj

pv_j

pvj​

(1 <= pvj

pv_j

pvj​

<= 1000000),表示乙隻牛在玩這個遊戲之後會產出多少牛奶。

最後,農夫約翰的預算為v

vv(1 <= v

vv<= 100000),即他最多可以花費的金錢。請幫助他確定應該買什麼遊戲平台和遊戲,使得他能夠獲得的產出值的和最大。

考慮下面的資料,有n

nn種遊戲平台,並且有v

vv=$800預算。第一種遊戲平台花費$300並且有兩個遊戲,**分別為$30和$25,它們的產出值如下所示:

遊戲 # 花費 產出值

1 $30 50

2 $25 80

第二種平台**為$600,並且只有一種遊戲:

遊戲 # 花費 產出值

1 $50 130

第三種平台**為$400,並且有三種遊戲:

遊戲 # 花費 產出值

1 $40 70

2 $30 40

3 $35 60

農夫約翰應該買第1和第3種平台,並且買平台1的遊戲2,還有平台3的遊戲1和遊戲3。使得

最後他最後的產出值最大,為210:

產出值預算: $800

平台 1 -$300

遊戲 2 -$25 80

平台 3 -$400

遊戲 1 -$40 70

遊戲 3 -$35 60

—————————

總計: 0 (>= 0) 210

第1行:兩個由空格隔開的整數:n

nn和v

vv第2到第n+1

n+1n+

1行:第i+1

i+1i+

1行表示第i

ii種遊戲平台的**和可以在這種遊戲平台上面執行的遊戲。包含:p

ip_i

pi​,g

ig_i

gi​還有g

ig_i

gi​對由空格隔開的整數gpj

gp_j

gpj​

,p vj

pv_j

pvj​

第1行:農夫約翰在預算內可以得到的最大的產出值。

3 800

300 2 30 50 25 80

600 1 50 130

400 3 40 70 30 40 35 60

依賴揹包。

先設f i,

j,kf_

fi,j,k

​表示當前做到第i個遊戲平台的第j個遊戲,花費k的最大價值。

則有f i,

j,k=

pvi,

j+ma

xf_=pv_+max\left \^._^}f_-p_},max_^f_} \right \}

fi,j,k

​=pv

i,j​

+max

然後我們發現,max

maxma

x中的值可以分別用兩個陣列,即lk=

maxl

=1i−

1.o=

1gif

l,o,

k−gp

i,j−

pi

l_=max_^._^}f_-p_}

lk​=ma

xl=1

i−1​

.o=1

gi​​

fl,o

,k−g

pi,j

​−pi

​​,r k=

maxo

=1j−

1fi,

o,k−

gpi,

jr_=max_^f_}

rk​=ma

xo=1

j−1​

fi,o

,k−g

pi,j

​​。所以,我們可以一邊推出f

ff,一邊更新r

rr。當乙個遊戲平台列舉完後,就將r

rr賦值給l

ll即可。

#include

#include

#include

using

namespace std;

int l[

100005

],r[

100005

],num[55]

,val[55]

,a[55][

15][2

],n,v,ans;

inline

intread()

while

((ch>=

'0')

&&(ch<=

'9')

)return an*ww;

}int

main()

for(

register

int i=

1;i<=v;i++

)l[i]=-

1;for(

register

int i=

1;i<=n;i++

)else

if(r[k-a[i]

[j][0]

]>=

0)r[k]

=max

(r[k]

,a[i]

[j][1]

+r[k-a[i]

[j][0]

]);}

}for

(register

int j=

0;j<=v;j++

)l[j]

=max

(l[j]

,r[j]);

}for

(register

int i=

0;i<=v;i++

)ans=

max(ans,l[i]);

printf

("%d"

,ans)

;fclose

(stdin);

fclose

(stdout);

return0;

}

151 USACO Dec07 建造路徑

輸入檔案 roads.in輸出檔案 roads.out簡單對比 時間限制 1 s 記憶體限制 128 mb 譯 by cmykrgb123 描述farmer john 剛剛得到了幾個新農場!他想把這幾個農場用路連線起來,這樣他就可以通過筆直的公路從乙個農場到另乙個農場了。現在已經有了幾條連線著的農場...

Usaco DEC08 bronze 劣質的草

題目描述 貝茜像其它奶牛一樣正在吃草,她正在思考她所在的地方。她注意 到她只得到了乙個平於海平面的廣泛大片牧場。只有海拔1公尺或者更 高更硬的草不那麼美味。草隨著海拔的增加越發難吃。繼續咀嚼,她意識到,這沒有食慾的食物長成兩側的丘陵,形成了青 翠美味豐富草地海洋中的一系列劣質草小島 貝茜穿上她的實驗...

字元0 數字0和 0

binoct dechex 縮寫 字元 解釋0000 000000 00nut null 空字元00110000 6048300 字元0ascii碼值 0 表示空字元,空字元就是平時所說的 0 字元 0 ascii碼值為 48,如 012 字串中的 0 表示字元 0 數字 0,所說的數字 0,就是平...