AOJ2187 Card Game
問題リンク Card Game
- 解法
ジャッキーのカードを出す順番は入力のまま固定、ゲイツの手札について9!通りの出し方を試してみよう → あれ?サンプルと答えが合ってるんですけど・・・? → まさかと思って提出 → Accepted → うをっ!?
確率とは不思議なものデスネー・・・。
と、思って他の方の解き方を調べてみたところ、「ジャッキーの手札に突き合わせるカードの出し方が9!通り」とのことで目からウロコでした。
- ソース
import java.util.Scanner; //Card Game public class AOJ2187 { int[] a, b; boolean[] u; int res; void dfs(int k, int pa, int pb){ if(k==9){ res+=pb<pa?1:0; return; } for(int i=0;i<9;i++){ if(u[i])continue; u[i] = true; dfs(k+1, pa+(b[k]<a[i]?a[i]+b[k]:0), pb+(b[k]<a[i]?0:a[i]+b[k])); u[i] = false; } } void run(){ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); while(T--!=0){ a = new int[9]; b = new int[9]; u = new boolean[9]; for(int i=0;i<9;i++)a[i]=sc.nextInt(); for(int i=0;i<9;i++)b[i]=sc.nextInt(); res = 0; dfs(0, 0, 0); double x = res*1.0/362880; System.out.printf("%.5f %.5f\n", x, 1-x); } } public static void main(String[] args) { new AOJ2187().run(); } }