ABC325F
解æ³
ã¾ãï¼ç´ ç´ã« bool å dp ãèããï¼
\( dp_{i,j,k} := \)
åºé \(i\) ã¾ã§ï¼ ã»ã³ãµã¼ 1 ã \(j\) åï¼ ã»ã³ãµã¼ 2 ã \(k\) å ã§å¯è½ã
\(\in Bool\)
ã¨ããï¼ æ¬¡ã«ï¼bool å dp ã®å®ç¾©åã®ããã¤ããå¤åã«ç§»ããã¨ãèããï¼ ãã®ã¨ãï¼\(i,j\) ã¯å¯¾è±¡ãªæ¡ä»¶ãªã®ã§ã©ã¡ãã§ãè¯ãï¼
å¤åã«ç§»ããã®ã¯ï¼ä½ãè¯ãæ§è³ªãæã£ã¦ããªãã¨ï¼é«éåã¯é£ããï¼ å®ç¾©åã¯å
¨æ¢ç´¢ããã®ã§ï¼ç¶ºéºãªæ§è³ªã§ããå¿
è¦ãç¡ãï¼
ä»åã¯ï¼\(i,j\) ãåºå®ããåæ㧠\(k\) ã¯å調æ§ãããã®ã§ï¼å¤åã«æã£ã¦ããã¨é«éåã§ããï¼
\(dp_{i,j} := \)
åºé \(i\) ã¾ã§ï¼ ã»ã³ãµã¼ 1 ã \(j\) å ã®ã¨ãã® \(k\) ã® min ã®åè¨
\(\in \mathbb{Z}\)
ã¨ããï¼ åºé\(i\) ã«ã¤ãã¦ï¼\(j\) ã決ã¾ãã°ï¼\(k\) ã® min ãæ±ã¾ãï¼ ã¾ãï¼\(i\) ã«é¢ãã¦ã¯ï¼å調æ§ãªã©ã®ç¶ºéºãªæ§è³ªãè¦å½ãããªãã®ã§ï¼ å¤åã«æã£ã¦è¡ã£ã¦ãé«éåã¯é£ããï¼
使ã£ã¦ããè¨å·ï¼ãã¯ãç "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
 ll n;
 cin >> n;
 vll d(n); rep(i,n) { cin >> d[i]; }
 vll l(2), c(2), k(2);
 rep(i,2) cin >> l[i] >> c[i] >> k[i];
 vll dp(k[0]+1, INFL);
 dp[0] = 0;
 rep(i,n){
  vll old(k[0]+1, INFL);
  swap(old,dp);
  rep(j,k[0]+1){
   // rep(add,k[0]+1)if(j+add <= k[0]){
   rep(add, k[0]+1-j){
    ll x = ceil(d[i] - add*l[0], l[1]);
    chmax(x, 0LL);
    chmin(dp[j+add], old[j] + x);
   }
  }
 }
 ll ans = INFL;
 rep(j,k[0]+1){
  if(dp[j] <= k[1]){
   chmin(ans, j*c[0] + dp[j]*c[1]);
  }
 }
 if(ans == INFL) ans = -1;
 cout << ans << endl;
 return 0;
}