結果
問題 | No.66 輝け☆全国たこやき杯 |
ユーザー | kuuso1 |
提出日時 | 2014-11-14 00:30:11 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 34 ms / 5,000 ms |
コード長 | 1,501 bytes |
コンパイル時間 | 815 ms |
コンパイル使用メモリ | 113,388 KB |
実行使用メモリ | 27,040 KB |
最終ジャッジ日時 | 2024-06-10 02:54:51 |
合計ジャッジ時間 | 1,583 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 23 ms
24,668 KB |
testcase_01 | AC | 23 ms
24,800 KB |
testcase_02 | AC | 25 ms
24,748 KB |
testcase_03 | AC | 23 ms
24,864 KB |
testcase_04 | AC | 25 ms
27,040 KB |
testcase_05 | AC | 24 ms
24,796 KB |
testcase_06 | AC | 25 ms
24,928 KB |
testcase_07 | AC | 26 ms
24,876 KB |
testcase_08 | AC | 27 ms
25,136 KB |
testcase_09 | AC | 34 ms
24,928 KB |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.Collections; using System.Collections.Generic; class TEST{ static void Main(){ Sol mySol =new Sol(); mySol.Solve(); } } class Sol{ public void Solve(){ // dp[i][k]:i番目の人がk回勝つ確率 double[][] P=new double[1<<M][]; for(int i=0;i<(1<<M);i++){ P[i]=new double[M+1]; P[i][0]=1.0; } for(int k=0;k<M;k++){ for(int i=0;i<(1<<M);i++){ int tF= (i^(1<<k)) &(0xFFFF<<k); int tE= tF+(1<<k); //Console.WriteLine("k={0},i={1},tF={2},tE={3}",k,i,tF,tE); for(int t=tF;t<tE;t++){ P[i][k+1]+=P[i][k]*P[t][k]*calP(i,t); } } } Console.WriteLine(P[0][M]); } double calP(int i,int j){ return Str[i]*Str[i]/(Str[i]*Str[i]+Str[j]*Str[j]); } int M; double[] Str; public Sol(){ M=ri(); Str=new double[(1<<M)]; for(int i=0;i<(1<<M);i++){ Str[i]=rd(); } } static String rs(){return Console.ReadLine();} static int ri(){return int.Parse(Console.ReadLine());} static long rl(){return long.Parse(Console.ReadLine());} static double rd(){return double.Parse(Console.ReadLine());} static String[] rsa(){return Console.ReadLine().Split(' ');} static int[] ria(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>int.Parse(e));} static long[] rla(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>long.Parse(e));} static double[] rda(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>double.Parse(e));} }