Submission #9313650


Source Code Expand

import java.util.Scanner;

public class Main {
    public static boolean[][][] visited;

    public static double sushi(double[][][] dp, int i, int j, int k, int N) {
        if(i <=0 && j <= 0 && k <= 0) {
            return 0;
        }

        if(visited[i][j][k]) {
            return dp[i][j][k];
        }

        visited[i][j][k] = true;

        double sum = i+j+k;
        dp[i][j][k] = N/sum;
        if(i > 0) {
            double r1;
            r1 = sushi(dp, i-1, j, k, N);
            r1 = r1 * i / sum;
            dp[i][j][k] += r1;
        }
        if(j > 0) {
            double r2;
            r2 = sushi(dp, i+1, j-1, k, N);
            r2 = r2 * j / sum;
            dp[i][j][k] += r2;
        }
        if(k > 0) {
            double r3;
            r3 = sushi(dp, i, j+1, k-1, N);
            r3 = r3 * k / sum;
            dp[i][j][k] += r3;
        }

        return dp[i][j][k];
    }

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int N = sc.nextInt();
        double[][][] dp;

        int[] a = new int[Math.max(N+1, 3+1)];

        for(int i=0; i<N; ++i) {
            int t = sc.nextInt();
            a[t]++;
        }

        int fromA3 = a[3];
        int fromA23 = a[2] + fromA3;
        dp = new double[a[1]+1+fromA23][a[2]+1+fromA3][a[3]+1];
        visited = new boolean[a[1]+1+fromA23][a[2]+1+fromA3][a[3]+1];

        double r = sushi(dp, a[1], a[2], a[3], N);
        System.out.printf("%.10f\n", r);
    }
}

Submission Info

Submission Time
Task J - Sushi
User skysign
Language Java8 (OpenJDK 1.8.0)
Score 100
Code Size 1567 Byte
Status AC
Exec Time 558 ms
Memory 307744 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 22
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17
Case Name Status Exec Time Memory
0_00 AC 95 ms 18896 KiB
0_01 AC 96 ms 19540 KiB
0_02 AC 95 ms 19924 KiB
0_03 AC 96 ms 18772 KiB
1_00 AC 96 ms 23764 KiB
1_01 AC 95 ms 20692 KiB
1_02 AC 96 ms 19028 KiB
1_03 AC 110 ms 24276 KiB
1_04 AC 130 ms 29060 KiB
1_05 AC 550 ms 301476 KiB
1_06 AC 128 ms 24064 KiB
1_07 AC 314 ms 129200 KiB
1_08 AC 426 ms 163108 KiB
1_09 AC 292 ms 88616 KiB
1_10 AC 283 ms 87600 KiB
1_11 AC 405 ms 168112 KiB
1_12 AC 425 ms 165296 KiB
1_13 AC 510 ms 237216 KiB
1_14 AC 501 ms 236188 KiB
1_15 AC 552 ms 305648 KiB
1_16 AC 554 ms 304920 KiB
1_17 AC 558 ms 307744 KiB