专题一 Problem K

一、题目编号:

           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;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值