记录编号 |
269163 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HNOI 1999] 快餐问题 |
最终得分 |
100 |
用户昵称 |
安呐一条小咸鱼。 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.896 s |
提交时间 |
2016-06-13 10:59:49 |
内存使用 |
1.31 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=50;
const int maxm=110;
int pro[maxn],f[maxn][maxm][maxm],a,b,c,hum,fre,dri,ans,n;
bool check(int,int,int);
int _h=0,_f=0,_d=0;
void Init();
void work();
int _drink(int,int,int);
int Main();
int haha=Main();
int main(){;}
int Main(){
freopen("meal.in","r",stdin);
freopen("meal.out","w",stdout);
Init();
return 0;
}
void Init(){
scanf("%d%d%d%d%d%d",&a,&b,&c,&hum,&fre,&dri);
int t=a*hum+b*fre+c*dri;
scanf("%d",&n);
int _temp=0;int _ans2=0;
for(int i=1;i<=n;i++){
scanf("%d",&pro[i]);
_ans2+=pro[i]/t;
int _max=pro[i]/t;
if(_max>3){
_max-=3;
pro[i]-=t*_max;
ans+=_max;
}
_temp+=pro[i];
}
int x=100/a,y=100/b,z=100/c;
int _mm=0x7f7f7f7f;
_mm=min(x,y);
_mm=min(_mm,z);
if(_ans2>_mm){
printf("%d",_mm);
return;
}
//printf("%d",ans);
_h=_temp/t*a;
_f=_temp/t*b;
_d=_temp/t*c;
//printf("%d _h=%d _f=%d\n",ans,_h,_f);
if(_h>100)_h=100;
if(_f>100)_f=100;
if(_d>100)_d=100;
work();
int _max=0;
for(int i=1;i<=_h;i++){
for(int j=1;j<=_f;j++){
int temp=0x7f7f7f7f;
temp=min(f[n][i][j]/c,i/a);
temp=min(temp,j/b);
_max=max(_max,temp);
//printf("%d\n",hum*a);
//printf("%d ",f[n][i][j]);
}
//printf("\n");
}
ans+=_max;
printf("%d\n",ans);
}
void work(){
memset(f, -1, sizeof(f));
f[0][0][0] = 0;
for(int i=1;i<=n;i++){
for(int j=0;j<=_h;j++){
for(int k=0;k<=_f;k++){
if(check(i-1,j,k)){
for(int j1=0;j1<=j;j1++){
for(int k1=0;k1<=k;k1++){
int temp_=_drink(i,j-j1,k-k1);
if (f[i-1][j1][k1] != -1)
f[i][j][k]=max(f[i-1][j1][k1]+temp_,f[i][j][k]);
}
}
}
else{
f[i][j][k]=f[i-1][j][k];
}
}
}
}
}
//第i条生产线,生产m个hum,生产n个fre
int _drink(int i,int m,int n){
int temp;
int th=m*hum,tf=n*fre;
temp=pro[i]-th-tf;
temp=temp/dri;
return temp;
}
bool check(int i,int j,int k){
int tmp=f[i][j][k];
if((tmp>_d&&((tmp-_d)*dri>hum))||(tmp>_d&&(tmp-_d)*dri>fre)){
return 0;
}
return 1;
}