//需要n中普通原料和g ml灰色原料
//每三种不同普通原料各x ml 可以合成 x ml 灰色原料
//问最少需要集组原料 每组各原料50 ml
# include <stdio.h>
# include <algorithm>
# include <string.h>
using namespace std;
int main()
{
int i,n,cot,g,a[15],g1,b[15];
while(~scanf("%d",&n),n)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
scanf("%d",&g);
sort(a,a+n);
sort(b,b+n);
if(a[n-1]%50==0)//满足普通原料的最少组数
cot=a[n-1]/50;
else
cot=a[n-1]/50+1;
for(i=0;i<n;i++)//剩下去合成灰色原料的数量
{
a[i]=cot*50-a[i];
b[i]=a[i];
}
while(1)
{
g1=g;
for(i=n-1;;)
{
sort(b,b+n);
if(b[i]>0&&b[i-1]>0&&b[i-2]>0)
{
g1--;
b[i]--;
b[i-1]--;
b[i-2]--;
}
else
break;
if(g1<=0)
{
break;
}
}
if(g1<=0)
{
printf("%d\n",cot);
break;
}
cot++;
for(i=0;i<n;i++)//不够加一组
{
a[i]+=50;
b[i]=a[i];
}
}
}
return 0;
}
poj 2709 Painter (贪心)
最新推荐文章于 2019-09-23 21:19:00 发布