結果
| 問題 |
No.498 ワープクリスタル (給料日編)
|
| コンテスト | |
| ユーザー |
Tawara
|
| 提出日時 | 2016-03-15 10:08:00 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 904 ms / 2,000 ms |
| コード長 | 852 bytes |
| コンパイル時間 | 181 ms |
| コンパイル使用メモリ | 7,296 KB |
| 実行使用メモリ | 66,688 KB |
| 最終ジャッジ日時 | 2024-10-15 19:44:29 |
| 合計ジャッジ時間 | 12,854 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 |
コンパイルメッセージ
Syntax OK
ソースコード
p = 10**9+7
comb = Array.new(76){[0]*76}
comb[0][0] = 1
Gx,Gy,K = gets.split().map{|s| s.to_i}
(0..K*15-1).each{|i|
(0..i+1).each{|j|
if j > 0 then
comb[i+1][j] = (comb[i][j] + comb[i][j-1]) % p
else
comb[i+1][j] = comb[i][j]
end
}
}
G = [Gx,Gy]; dp = [nil]*(1<<K*4); dp[0] = [0,0]
(0..K-1).each{|i|
x,y,n = gets.split().map{|s| s.to_i}
shift = i*4
j = 0
while n > 0
mul = [1<<j,n].min()
mx,my = x*mul,y*mul
n -= mul
(0..(1<<(j+shift))-1).reverse_each{|k|
if dp[k] == nil then
next
end
dp[k+(mul<<shift)]=[dp[k][0]+mx,dp[k][1]+my]
}
j += 1
end
}
ans = 0
(0..(1<<(K*4))-1).each{|k|
if dp[k] != G then
next
end
total = 0
tmp = 1
(0..K-1).each{|i| total += (k>>(i*4))%16}
(0..K-1).each{|i|
dup_n = (k>>(i*4))%16;
tmp = tmp * comb[total][dup_n] % p;
total-=dup_n;
}
ans = (ans + tmp) % p;
}
p ans
Tawara