結果

問題 No.1688 Veterinarian
ユーザー merlinmerlin
提出日時 2021-09-24 23:41:47
言語 Java21
(openjdk 21)
結果
AC  
実行時間 1,344 ms / 3,000 ms
コード長 1,287 bytes
コンパイル時間 4,853 ms
コンパイル使用メモリ 74,684 KB
実行使用メモリ 375,896 KB
最終ジャッジ日時 2023-09-18 22:27:47
合計ジャッジ時間 25,226 ms
ジャッジサーバーID
(参考情報)
judge12 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1,107 ms
371,976 KB
testcase_01 AC 1,107 ms
372,468 KB
testcase_02 AC 1,104 ms
372,228 KB
testcase_03 AC 1,107 ms
372,036 KB
testcase_04 AC 1,116 ms
372,092 KB
testcase_05 AC 1,108 ms
371,992 KB
testcase_06 AC 1,122 ms
373,112 KB
testcase_07 AC 1,138 ms
372,152 KB
testcase_08 AC 1,344 ms
375,896 KB
testcase_09 AC 1,316 ms
375,548 KB
testcase_10 AC 1,211 ms
375,200 KB
testcase_11 AC 1,184 ms
375,172 KB
testcase_12 AC 1,107 ms
372,492 KB
testcase_13 AC 1,172 ms
372,692 KB
testcase_14 AC 1,118 ms
372,160 KB
testcase_15 AC 1,232 ms
374,092 KB
testcase_16 AC 1,103 ms
371,932 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.io.*;
import java.util.*;

class Main
{
    public static void main(String args[])throws Exception
    {
        BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb=new StringBuilder();
        String s[]=bu.readLine().split(" ");
        int a=Integer.parseInt(s[0]),b=Integer.parseInt(s[1]),c=Integer.parseInt(s[2]),n=Integer.parseInt(s[3]);
        for(int i=0;i<=a;i++)
        for(int j=0;j<=b;j++)
        for(int k=0;k<=c;k++)
        for(int l=0;l<=n;l++) Arrays.fill(dp[i][j][k][l],-1);

        System.out.printf("%.7f %.7f %.7f\n",calc(a,b,c,n,0),calc(a,b,c,n,1),calc(a,b,c,n,2));
    }

    static double dp[][][][][]=new double[51][51][51][51][3];
    static double calc(int a, int b, int c, int n, int k)
    {
        if(n==0) return 0.0;
        else if(dp[a][b][c][n][k]>=0.0) return dp[a][b][c][n][k];

        int all=(a+b+c)*(a+b+c-1)/2, sum=a*(a-1)/2+b*(b-1)/2+c*(c-1)/2;
        double add=calc(a,b,c,n-1,k)*(all-sum)/all;

        if(a>=2) add+=(calc(a-1,b,c,n-1,k)+ ((k==0)?1:0))*(a*(a-1)/2)/all;
        if(b>=2) add+=(calc(a,b-1,c,n-1,k)+ ((k==1)?1:0))*(b*(b-1)/2)/all;
        if(c>=2) add+=(calc(a,b,c-1,n-1,k)+ ((k==2)?1:0))*(c*(c-1)/2)/all;

        dp[a][b][c][n][k]=add;
        return add;
    }
}
0