AOJ2363 Unequal Dice

問題リンク Unequal Dice

  • 解法

もう1回チャレンジできる面があるというのが面倒です。
そこで、数字が書かれている面が出る確率Rを求めます。
そして数字が書かれている面が出る各確率riをri/Rに置き換えたらなんか解けました。
確率とか期待値とかいつも適当に勘とノリで使っているので説明できんのですスイマセンorz

  • ソース
import java.util.Scanner;

//Unequal Dice
public class AOJ2363 {

	void run(){
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		double e = 0;
		while(t--!=0){
			sc.next();
			int m = sc.nextInt();
			double[][] a = new double[m][2];
			double r = 0;
			for(int i=0;i<m;i++){
				a[i][0] = sc.nextDouble(); a[i][1] = sc.nextDouble();
				r+=a[i][1];
			}
			double p = 0;
			for(int i=0;i<m;i++)p+=a[i][0]*a[i][1]/r;
			e = Math.max(e, p);
		}
		sc.nextInt();
		int q = sc.nextInt();
		double x = 0, r = 0;
		double[][] a = new double[q][2];
		for(int i=0;i<q;i++){
			a[i][0] = sc.nextDouble(); a[i][1] = sc.nextDouble();
			r+=a[i][1];
		}
		for(int i=0;i<q;i++)x+=a[i][0]*a[i][1]/r;
		System.out.println(x+1e-7<e?"YES":"NO");
	}
	
	public static void main(String[] args) {
		new AOJ2363().run();
	}
}