原题:原题点此
题意:题目依次给出3-12种颜料每一种所需的量,最后一种是灰色所需的量,灰色可由任意三种颜色混合而成,但要注意的是每三瓶Xml的不同种颜料,只能合成Xml的颜料。问你最少买几盒颜料(每一盒中有所需颜料各一瓶,一瓶50ml)
思路:先买够除灰色外所需颜料的量,再用多余的一毫升一毫升的来配灰色,每一次都用量最多的三种颜料来配灰色,若第三多的颜料量为零了则需要再买一盒。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int n,g,x;
int a[15];
while(~scanf("%d",&n))
{
if(n==0)
break;
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&g);//存灰色所需量
sort(a,a+n);
if(a[n-1]%50!=0)//
x=a[n-1]/50+1;
else
x=a[n-1]/50;
for(int i=0; i<n; i++)
a[i]=50*x-a[i];
sort(a,a+n);//注意此处还需用一次sort
for(int j=g; j>0; j--)
{
if(a[n-3]==0)
{
x++;
for(int i=0; i<n; i++)
a[i]+=50;
}
a[n-1]--;
a[n-2]--;
a[n-3]--;
sort(a,a+n);
}
printf("%d\n",x);
}
return 0;
}