记录编号 39414 评测结果 AAAAAWTTTT
题目名称 [HNOI 1999] 快餐问题 最终得分 50
用户昵称 GravatarCC 是否通过 未通过
代码语言 C++ 运行时间 4.746 s
提交时间 2012-07-10 16:05:08 内存使用 5.81 MiB
显示代码纯文本
#include <cstdio>
#include <algorithm>
#define INF 1000000000
int A,B,C,a,b,c,n,K;
int f[105][105][105];
bool ok[105][105][105],out;
int main() {
    freopen("meal.in","r",stdin);
    freopen("meal.out","w",stdout);
    scanf("%d%d%d", &A, &B, &C);
    scanf("%d%d%d", &a, &b, &c);
    scanf("%d", &n);
    ok[0][0][0] = 1;
    for (int i = 1;i <= n;i++) {
        scanf("%d", &K);
        out = 0;
        for (int p = 0;p <= 100;p++) {
            for (int q = 0;q <= 100;q++) 
			if (ok[i - 1][p][q]) {
                for (int u = 0;u <= 100;u++) {
                    if (u * a > K) break;
                    for (int v = 0;v <= 100;v++) {
                        if (u * a + v * b > K) break;
                        ok[i][p + u][q + v] = 1;
                        f[i][p + u][q + v] = f[i - 1][p][q] + (K - u * a - v * b) / c;
                    }
                }
            }
        }
    }
    int tmp,ans = 0;
    for (int i = 0;i <= 100;i++)
        for (int j = 0;j <= 100;j++) 
            if (ok[n][i][j]) {
                int k = f[n][i][j];
                tmp = INF;
                tmp = std::min(tmp,i / A);
                tmp = std::min(tmp,j / B);
                tmp = std::min(tmp,k / C);
                ans = ans < tmp ? tmp : ans;
            }
    printf("%d\n", ans);
    return 0;
}