山东省第三届acm

时间:2014-07-22 23:13:54   收藏:0   阅读:307

#include <iostream>
#include <stdio.h>
using namespace std;
int s[4],p[4];

long long llmax(long long a,long long b)
{
    return a>b?a:b;
}
int main()
{
    int t;
    cin>>t;
    int c=1;
    while(t--)
    {
        for(int i=1; i<=3; i++)
            cin>>s[i]>>p[i];
        int V;
        cin>>V;
        int k1=1,k2,k3;
        for(int i=2; i<=3; i++)
        {
            if(p[i]*s[k1]>p[k1]*s[i])//判断优先级
                k1=i;
        }
        if(k1==1){k2=2;k3=3;};//k1是最优的物品,k2,k3是谁没有关系
        if(k1==2){k2=1,k3=3;};
        if(k1==3){k2=1,k3=2;};
        long long ans=0;
        for(int i=0; i<s[k1]; i++)//枚举
        {
            for(int j=0; j<s[k1]; j++)
            {
                long long temp=i*s[k2]+j*s[k3];//temp为 i+j件 次品的容量
                if(temp>V)
                    break;
                else
                {
                    long long v=V-temp;//     v为i+j件次品放下后剩余的空间
                    ans=llmax(ans,v/s[k1]*p[k1]+i*p[k2]+j*p[k3]);//选最大值
                }
            }
        }
        cout<<"Case "<<c++<<": "<<ans<<endl;
    }
    return 0;
}

山东省第三届acm,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!