Submission #5699199
Source Code Expand
using System; using System.Linq;//リストの使用 using System.Collections.Generic; using System.Text;//テキストの高速出力に必要 class Program { static int n = int.Parse(Console.ReadLine()); static int[] nums = Array.ConvertAll(Console.ReadLine().Split(' '),int.Parse); static double[] dp = new double[1<<16]; static long aim = 0; static void Main() { for(int i = 0; i < n; i++) { aim += (1<<nums[i]); } for(int i = 0; i < 1<<16; i++) { dp[i] = -1; } dp[0] = 0;//初期化 Console.WriteLine(DP(aim)); } static double DP(long rest) { if(dp[rest] != -1) return dp[rest]; for(int i = 0; i < 14; i++) { if(((rest >> i)&1) == 1 || i == 13) { int changeCount = 0; if(((rest >> i)&1) == 1) changeCount++; if(((rest >> i+1)&1) == 1) changeCount++; if(((rest >> i+2)&1) == 1) changeCount++; dp[rest] = 0; if(changeCount == 3) { dp[rest] = 1; if(((rest >> i)&1) == 1) dp[rest] += (double)(DP(rest^(1<<i)))/3; if(((rest >> i+1)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+1))))/3; if(((rest >> i+2)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+2))))/3; }else if(changeCount == 2) { dp[rest] = (double)3/2; if(((rest >> i)&1) == 1) dp[rest] += (double)(DP(rest^(1<<i)))/2; if(((rest >> i+1)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+1))))/2; if(((rest >> i+2)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+2))))/2; }else if(changeCount == 1) { dp[rest] = 3; if(((rest >> i)&1) == 1) dp[rest] += (double)(DP(rest^(1<<i))); if(((rest >> i+1)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+1)))); if(((rest >> i+2)&1) == 1) dp[rest] += (double)(DP(rest^(1<<(i+2)))); }else return dp[rest] = 0; break; } } //Console.WriteLine(DP(rest)+" "+rest); return dp[rest]; } }
Submission Info
Submission Time | |
---|---|
Task | J - ボール |
User | suikameron |
Language | C# (Mono 4.6.2.0) |
Score | 5 |
Code Size | 2067 Byte |
Status | AC |
Exec Time | 22 ms |
Memory | 11732 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 5 / 5 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 03, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 22 ms | 9684 KB |
01 | AC | 21 ms | 11732 KB |
02 | AC | 21 ms | 9684 KB |
03 | AC | 21 ms | 11732 KB |
90 | AC | 21 ms | 9684 KB |
91 | AC | 21 ms | 11732 KB |