DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Colorful Domino Tiling

問題に戻る

解説

小さい入力:配置と色付けの全探索

NMNMNM が奇数なら答えは零である。それ以外では、まだ覆われていない最初のマスを右または下のマスと組にする探索で、すべての敷き詰め方を一度ずつ列挙できる。各配置について、ドミノを頂点、隣接関係を辺とするグラフを作る。

頂点を順に色付けする。使用済みの色が ccc 種類なら、既存の色のうち隣接する先行頂点と衝突しないものを試し、さらに新しい色を代表一色で試して K−cK-cK−c 倍する。これは初登場順による色名の正規化である。サブタスク 1 ではドミノ数は最大八個である。ドミノ数 DDD、配置数 LLL に対し、保守的な上界は時間 O(LD2BD)O(LD^2B_D)O(LD2BD​)、空間 O(NM+D2)O(NM+D^2)O(NM+D2) である。BDB_DBD​ は Bell 数を表す。

全体の解法:境界 DP

必要なら格子を回転し、幅を W=min⁡(N,M)W=\min(N,M)W=min(N,M)、高さを H=max⁡(N,M)H=\max(N,M)H=max(N,M) とする。上から下へ、各行では左から右へ一マスずつ処理する。各列で最後に処理したマスを境界に保持する。処理直前の同じ列の要素は上の隣接マスであり、現在行で直前に処理した要素は左の隣接マスである。

境界の各マスには、正規化した色番号と、既に処理したマスとのペアが完成しているかを表すビットを保存する。存在しないマスの色番号は零とする。未完成のマスも色は決まっているが、後で右または下のマスと組になる必要がある。境界から消えるマスは未処理マスと隣接しないので、その色を別途記憶する必要はない。

境界を左から読んで色の初登場順に 1,2,3,…1,2,3,\ldots1,2,3,… を付ける。例えば (7,2,7,5)(7,2,7,5)(7,2,7,5) は (1,2,1,3)(1,2,1,3)(1,2, となる。DP 値は、その状態に対応する実際の色付き配置の数である。

遷移

新しいマスの上と左の隣接マスを U,LU,LU,L とする。存在しない隣接マスは無視する。

  • UUU が未完成なら、今のマスと必ず組にする。色は UUU と同じで、新しいマスは完成済みとなる。LLL があればその色とは異なる必要がある。UUU を境界から取り除く。
  • UUU が存在しないか完成済みなら、未完成の LLL と組にできる。 と同じ色にし、 があればその色とは異なることを確認する。 と新しいマスを両方完成済みにする。

最後の選択では、現在の境界に ccc 色あれば既存の各色を試す。境界にない色は同じ新番号になるので、一つの遷移にまとめて K−cK-cK−c 倍する。過去に使ったが境界から消えた色もこの選択肢に含まれる。過去に使った色の総数ではなく、現在の境界の色数を数える。

上の要素を新しいマスに置き換え、再び正規化する。初期状態は空の境界で値は一。全マスの処理後、境界の全マスが完成済みの状態だけを足す。

正当性

各ドミノは行優先順で二番目のマスを処理するときに一度だけ完成する。上の未完成マスは今組にしなければ後で相手を得られないため、最初の遷移は強制される。それ以外では左と組にするか将来の相手を待つかの二択がすべての可能性を分割する。新しいマスの処理済み隣接マスは上と左だけなので、すべての隣接条件を正確に確認できる。色名の変更で実現可能性は変わらず、新しい色の K−cK-cK−c 倍で実際の色名の選択数を復元する。よって各合法な色付き配置を重複なく数える。

状態数と計算量

色の同値関係は集合分割であり、その数は Bell 数 BWB_WBW​ 以下、B8=4140B_8=4140B8​=4140 である。完成ビットを含めると BW2WB_W2^W 状態以下となる。四本の縦ドミノの色を とすることが可能なので、色の同値関係は非交差とは限らない。この DP を Catalan 数で制限したり、交差する色パターンを除去したりしてはいけない。

一状態当たり色の選択が O(W)O(W)O(W) 個、正規化が O(W)O(W)O(W) かかる。ハッシュ操作が平均定数時間なら、時間は O(HW⋅BW2W⋅W2)O(HW\cdot B_W2^W\cdot W^2)O(HW⋅B、追加空間は である。到達可能な状態だけを保持し、この実装の最大入力では一段階につき約 状態となる。

各演算後に P=998 244 353P=998\,244\,353P=998244353 で剰余を取る。積は 100(P−1)100(P-1)100(P−1) 以下、和は 2(P−1)2(P-1)2(P−1) 以下である。圧縮状態は 40 ビット以内で、符号付き 64 ビット整数で十分である。独立検証用実装では異色条件を包除原理で展開し、連結成分を保持して計算する。

Solution written by GPT6

1
,
3
)
LL
L
UUU
LLL
  • UUU が存在しないか完成済みなら、新しいマスを未完成のまま残してもよい。色は U,LU,LU,L のどちらとも異なる必要がある。将来の相手が存在しない最後のマスではこの選択を省く。
  • BW​
    2W
    A,B,A,BA,B,A,BA,B,A,B
    W
    ​
    2W
    ⋅
    W2)
    O(BW2W)O(B_W2^W)O(BW​2W)
    10510^5105