AOJ2330 Earth Invasion Diary of Miyabi-sensei

問題リンク Earth Invasion Diary of Miyabi-sensei

  • 解法

F(n)をn人のドラキュラの中から本物を見つけるための比較回数とします。
n < n'のとき、F(n) <= F(n')はすぐ分かると思います。
ここで、n人の中からx人だけ1つの皿の上に乗せると考えると、n人の集団が(x, x, n-2*x)の集団に分かれます。この集団に分けるために比較を1度行ったことになります。更に、比較の結果、本物のドラキュラがどの集団に属するかも分かります(天秤が振れたらxの中に、平衡したらn-2*xの中に居ると分かります)。最悪の比較回数はF(x), F(n-2*x)のうちの大きい方となります。よって、最悪の回数を押さえるためにはxとxとn-2*xの3つの集団の人数を平均的にすればいいと分かります。つまり、だいたいn/3の人数にすれば最悪の比較回数が抑えられることになります。あとは、n%3で少し場合分けを考えれば解けます。

  • ソース
import java.util.Scanner;

//Earth Invasion Diary of Miyabi-sensei
public class AOJ2330 {

	int f(int n){
		return n<=1?0:(n%3==0?f(n/3):f(n/3+1))+1;
	}
	
	void run(){
		Scanner sc = new Scanner(System.in);
		System.out.println(f(sc.nextInt()));
	}
	
	public static void main(String[] args) {
		new AOJ2330().run();
	}
}