TopCoder SRM609: PackingBallsDiv2
variety set の個数を固定すると、same set の個数が一意に求められる。
そして variety set の候補は、0 から max(R,G,B) で高々 101 通りなので、それらを全て試す。
public class PackingBallsDiv2 { public int minPacks(int R, int G, int B) { int ans = 100; for (int i = 100; i >= 0; i--) { int r = R - i; int g = G - i; int b = B - i; int sub = i; if (r > 0) sub += (r - 1) / 3 + 1; if (g > 0) sub += (g - 1) / 3 + 1; if (b > 0) sub += (b - 1) / 3 + 1; ans = Math.Min(ans, sub); } return ans; } }