結果

問題 No.108 トリプルカードコンプ
ユーザー hytkxd
提出日時 2023-09-01 16:44:53
言語 Ruby
(3.4.1)
結果
TLE  
実行時間 -
コード長 744 bytes
コンパイル時間 222 ms
コンパイル使用メモリ 8,192 KB
実行使用メモリ 53,400 KB
最終ジャッジ日時 2025-01-03 06:41:45
合計ジャッジ時間 51,764 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 10 WA * 3 TLE * 7
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

#!/usr/local/bin/ruby
class TripleCardComp
  def initialize(*arg)
    @n,@a = arg
    @n = @n.to_r
    @dp = Array.new(@n+1){Array.new(@n+1){Array.new(@n+1)}}
    @dp[0][0][0] = 0
  end

  private
  def dynamic(x,y,z)
    if x < 0 || y < 0 || z<0
      0
    else
      unless @dp[x][y][z]
        @dp[x][y][z] = (dynamic(x-1,y+1,z)*x + dynamic(x,y-1,z+1)*y + dynamic(x,y,z-1)*z + @n)/(x+y+z).to_r
      end
      @dp[x][y][z]
    end
  end

  public

  def ans
    g = (0...@n).group_by{|i| @a[i]}
    x = g[0] || []
    y = g[1] || []
    z = g[2] || []
    dynamic(x.size,y.size,z.size)
  end
end
### END: class TripleCardComp
iod = STDIN
n, = iod.gets.split.map &:to_i
a = iod.gets.split.map &:to_i
puts TripleCardComp.new(n,a).ans
exit 0

0