一、题目编号:
Problem K
二、简单题意:
给出所需要的颜料,最大只有50ML,然后给出了颜料的个数和需要的套数,灰色只能用三种不同的颜料混合出来,最少需要几套颜料。
三、解题思路形成过程
将颜料进行排序,先排除灰色外最多需要多少套颜料,需要的最大个数的颜料就是所需的套数,然后将剩下的进行排序,前三套组成灰色,可以成功就输出,不能就在增加一套,排序、混合,直到可以输出。
四、感想
好好学英语!!
五、AC代码
#include<iostream>
#include<algorithm>
#include<fstream>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n;
int gray=0,num=0,k[100],w[100];
while(cin>>n)
{
if(n==0)
break;
for (int i=0;i<n;i++)
cin>>k[i];
cin>>gray;
sort(k,k+n,cmp);
if (k[0]%50==0)
num=k[0]/50;
else
num=k[0]/50+1;
for(int x=0;x<n;x++)
w[x]=num*50-k[x];
while(gray>0)
{
sort(w,w+n,cmp);
if(w[2]==0)
{
num++;
for (int y=0;y<n;y++)
w[y]+= 50;
}
gray--;
w[0]--;
w[1]--;
w[2]--;
}
cout<<num<<endl;
}
return 0;
}