bzoj5018 Snoi2017 英雄聯盟

2022-04-30 06:03:11 字數 746 閱讀 4769

10.5重回bzoj。刷了這道揹包dp交了10次。

不過這個真的是一道好題。(也許是我dp太爛

)由於錢數較小,容易想到,f[i]表示花了i元所有的展示策略個數。然而在dp的時候卻有乙個問題,我們列舉買的**個數維護揹包時,有可能同乙個英雄不同**數疊乘,這樣就不對了,所以dp時先從後將更新的位置列舉出來,再列舉買**個數,這樣就不會重複。

#include#include

#include

using

namespace

std;

typedef

long

long

ll;ll f[

1100000],a[1100],c[1100

];int

main()

for(int i=1;i<=n;i++)scanf("

%lld

",&a[i]);

for(int i=1;i<=n;i++)scanf("

%lld

",&c[i]);

memset(f,

0,sizeof(f));f[0]=1

; ll sum=0,ans=2147483647

;

for(int i=1;i<=n;i++)

if(f[j]>=m)ans=j;}}

printf(

"%lld

",ans);

return0;

}

bzoj5018 Snoi2017 英雄聯盟

description 正在上大學的小皮球熱愛英雄聯盟這款遊戲,而且打的很菜,被們戲稱為 小學生 現在,小皮球終於受不 了們的嘲諷,決定變強了,他變強的方法就是 買 小皮球只會玩n個英雄,因此,他也只準備給這n個英 雄買 並且決定,以後只玩有 的英雄。這n個英雄中,第i個英雄有ki款 是每款ciq幣...

bzoj5018 Snoi2017 英雄聯盟

題目 嗯,其實吧,還是算比較顯然的dp。f i j 表示前 i個英雄 用了j 元錢的最 多方案數 最後答 案就是滿 足f n j m最小 的j了。轉移方法,首先 肯定要 列舉i,然後列舉 當前買幾 個 j 再列舉 l表示f i l 從什 麼轉移過 來。注意 每次l 的上界是 當前買所 有 的 這樣,...

BZOJ5018 Snoi2017 英雄聯盟

算算 n 的最大值,i 1 nk i c i 243552 這就可以直接上揹包了 最裸最暴力的那種 可以選擇滾動陣列,並不能減掉一維,因為在重複列舉 j 的時候除第一次列舉之外都會用到當前這一層的狀態 include include include include include includeus...