結果
| 問題 |
No.2983 Christmas Color Grid (Advent Calender ver.)
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2024-11-21 15:41:05 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 907 ms / 3,340 ms |
| コード長 | 771 bytes |
| コンパイル時間 | 273 ms |
| コンパイル使用メモリ | 82,156 KB |
| 実行使用メモリ | 84,800 KB |
| 最終ジャッジ日時 | 2024-11-21 15:41:16 |
| 合計ジャッジ時間 | 9,257 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 64 |
ソースコード
R=range H,W,K,M=map(int,input().split()) HW=H*W p=1<<HW found=[0]*((p+31)>>5) count=[0]*(HW+1) dfs=[] for h in R(H): for w in R(W): i=h*W+w s=1<<i found[s>>5]|=1<<(s&31) bs=0 for dx,dy in zip([-1,0,1,0],[0,-1,0,1]): if 0<=h+dx<H and 0<=w+dy<W: j=i+dx*W+dy bs|=(1<<j) dfs+=[[s,bs]] while dfs: s,bs=dfs.pop() c=s.bit_count() count[c]+=1<<(HW-c-bs.bit_count()) for i in R(HW): if(bs>>i)&1<1:continue h,w=i//W,i%W t=s|(1<<i) if(found[t>>5]>>(t&31))&1:continue; found[t>>5]|=1<<(t&31) bt=bs^(1<<i) for dx,dy in zip([-1,0,1,0],[0,-1,0,1]): if 0<=h+dx<H and 0<=w+dy<W: j=i+dx*W+dy if(s>>j)&1<1:bt|=(1<<j) dfs+=[[t,bt]] print(sum(pow(c,K,M)*count[c]for c in R(1,HW+1))*sum(pow(HW-n+1,-1,M)for n in R(1,HW+1))*pow(2,-HW,M)%M)