2709 Painter
問題概要
絵の具のセット一つにはN色の絵の具がそれぞれ50mlずつ入っている。
異なる3色の絵の具をxmlずつ混ぜるとxmlのグレーの絵の具を作ることができる。
各色の必要量および、グレーの色の必要量が与えられるとき、
絵の具のセットを購入しなければならない最小の数を求めよ。
N≦12,それぞれの絵の具の必要量≦1000を満たす。
解法
グレーの絵の具を1ml作るには、余っている絵の具を量の多い順に使えばよい。
絵の具の量は小さいので、
上の操作をグレーの絵の具の量の回数、絵の具の量をソートしながら繰り返す解法で通る。
ソースコード
int n,g,in[12],ans,t; void func(){ sort(in,in+n,greater<int>()); if(in[2]==0) { ans++; rep(i,n)in[i]+=50; } in[0]--; in[1]--; in[2]--; } int main() { while(scanf("%d",&n),n) { ans=0; rep(i,n) { scanf("%d",in+i); ans=max(ans,in[i]/50+(in[i]%50!=0)); } scanf("%d",&g); rep(i,n) { in[i]=ans*50-in[i]; } rep(i,g)func(); printf("%d\n",ans); } return 0; }