結果
問題 | No.1754 T-block Tiling |
ユーザー | horiesiniti |
提出日時 | 2023-07-05 00:44:52 |
言語 | Ruby (3.3.0) |
結果 |
AC
|
実行時間 | 133 ms / 2,000 ms |
コード長 | 1,523 bytes |
コンパイル時間 | 171 ms |
コンパイル使用メモリ | 7,680 KB |
実行使用メモリ | 12,544 KB |
最終ジャッジ日時 | 2024-07-18 19:04:45 |
合計ジャッジ時間 | 992 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 133 ms
12,544 KB |
testcase_01 | AC | 133 ms
12,160 KB |
コンパイルメッセージ
Main.rb:10: warning: assigned but unused variable - size Syntax OK
ソースコード
#認知機能障害(思考力などの低下)日常でも感じてたがプログラムにも影響するのは悲しいな、 def f() n=100*4 ds=[] ds<<[[1,0],[2,0],[1,1]] ds<<[[1,-1],[1,0],[1,1]] ds<<[[1,0],[1,-1],[2,0]] ds<<[[0,1],[0,2],[1,1]] ans=[0] size=1 seed=[] 4.times{ seed<<[0]*3 } dp={} dp[seed]=1 0.upto(n-2){|x| es={} dp.keys.each{|e| perm=dp[e] enow=[] 4.times{|j| enow<<e[j].dup } es[enow]=perm } 4.times{|y| es2={} es.keys.each{|enow| if enow[y][0]==1 then enext=[] 4.times{|j| enext<<enow[j].dup } enext=enow.dup es2[enext]=0 if es2.member?(enext)==false es2[enext]+=es[enow] else ds.each{|d1| check=d1.all?{|dx,dy| x2=x+dx y2=y+dy if 400<x2 || y2<0 || 3<y2 then false elsif enow[y2][dx]==1 then false else true end } if check then enext=[] 4.times{|j| enext<<enow[j].dup } enext[y][0]=1 d1.each{|dx,dy| y2=y+dy enext[y2][dx]=1 } es2[enext]=0 if es2.member?(enext)==false es2[enext]+=es[enow] end } end } es=es2.dup } dp.clear es.keys.each{|k| perm1=es[k] k.map!{|e| e.shift e<<0 e } dp[k.dup]=0 if dp.member?(k)==false dp[k.dup]=(dp[k.dup]+perm1)%998244353 } if x%4==2 then ans<<dp.select{|k,v| k==[[1,0,0],[1,0,0],[1,0,0],[1,0,0]]}.values.sum%998244353 end } return ans end t=gets.to_i ans=f() t.times{ puts ans[gets.to_i] }