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...