给出几种颜色需求的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); } }