给出几种颜色需求的ml量,然后最后一个数是灰色需求量,灰色可以由任何三中不同颜色的颜色组成,每个颜料盒有所给出的颜色的炎凉50ml
问最少给出几个颜料盒,可以组成所需求颜色
显然贪心可以解决,先求出满足的普通色所需的最小盒数,然后把剩余颜料从大到小排列,那前三种每个取出1ml组成1
ml的灰色,在这里本来我是把选出三个颜色中,直接选取第三个(最小容量)的所有容量k,组成kml的灰色,后来发现不行,贪心必须每次都要要求最好
所以每次1ml来选才能达到要求
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define N 15
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int co[N],n,gay,cnt;
int main()
{
int max;
while(scanf("%d",&n)!=EOF,n)
{
max=-1;cnt=0;
for(int i=0;i<n;i++)
{
scanf("%d",&co[i]);
if(co[i]>max)max=co[i];
}
scanf("%d",&gay);
cnt+=max/50;
if(max%50!=0)cnt++;
for(int i=0;i<n;i++)
co[i]=cnt*50-co[i];
while(gay>0)
{
sort(co,co+n,cmp);
if(co[2]>0)
{
gay--;
co[0]--;
co[1]--;
co[2]--;
}
else
{
cnt++;
for(int i=0;i<n;i++)
co[i]+=50;
}
}
printf("%d\n",cnt);
}
}

浙公网安备 33010602011771号