zoukankan      html  css  js  c++  java
  • CodeForces 234F 简单dp

    //CodeForces 234F

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "algorithm"
     5 using namespace std;
     6 const int INF = 0x3f3f3f3f;
     7 int dp[210][40010][2];
     8 int n, a, b;
     9 int h[210], c[210], s[210];
    10 
    11 int main()
    12 {
    13     freopen("input.txt", "r", stdin);
    14     freopen("output.txt", "w", stdout);
    15     int i, j, k;
    16     scanf("%d%d%d", &n, &a, &b);
    17     for(i = 1; i<=n; ++i) {
    18         scanf("%d", &h[i]);
    19         c[i] = min(h[i-1], h[i]);
    20         s[i] = s[i-1] + h[i];
    21     }
    22     memset(dp, 0x3f, sizeof(dp));
    23     dp[0][0][0] = dp[0][0][1] = 0;
    24     for(i = 1; i <= n; ++i) {
    25         for(j = 0; j<=s[i]; ++j) {
    26             if(j > a)
    27                 break;
    28             if(s[i] - j > b)
    29                 continue;
    30             if(j >= h[i])
    31                 dp[i][j][0] = min(dp[i-1][j - h[i]][0], dp[i-1][j - h[i]][1] + c[i]);
    32             dp[i][j][1] = min(dp[i-1][j][0] + c[i], dp[i-1][j][1]);
    33         }
    34     }
    35     int res = INF;
    36     for(j = 0; j<=a; ++j) {
    37         for(k = 0; k<=1; ++k)
    38             res = min(res, dp[n][j][k]);
    39     }
    40     if(res==INF)
    41         printf("-1");
    42     else
    43         printf("%d
    ", res);
    44 }
  • 相关阅读:
    将博客搬至CSDN
    defender 月考总结
    生日祝福@陈俊翰
    个性签名
    你这是virus吧?
    (CPSCA's)CPOJC+VIJOS
    Sentence by defender
    工作制一览
    最长上升子序列
    mysql约束
  • 原文地址:https://www.cnblogs.com/AC-Phoenix/p/4288604.html
Copyright © 2011-2022 走看看