Advertisement
ransempx

Three Colors

Dec 3rd, 2019
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. 条件は ( R+G > B ) AND ( G+B > R ) AND ( B+R > G ) で,これを否定すると ( R+G ≤ B ) OR ( G+B ≤ R ) OR ( B+R ≤ G ) になる。各条件について組み合わせの個数を適切な DP で数え上げて足せば余事象の個数がわかるが, (R, G, B) = (S/2, S/2, 0), (S/2, 0, S/2), (0, S/2, S/2) のときはそれぞれの場合がダブルカウントされているので引く必要がある。(たとえば, (R, G, B) = (S/2, S/2, 0) は R のときと G のときでダブルカウントされている)
  2. 対称性から R にのみ着目する。
  3. dp[i+1][x] := i 番目までとって赤色に塗られている数の総和が x であるような塗り方の個数として,適当な遷移で G+B ≤ R となるような R のとり方の数 X を求める。(ある数を赤に塗る場合は×1で,G または B に塗るなら ×2)
  4. また別のテーブルを用意して R = S/2 となるような選び方の組み合わせの数をナップザックして求めると,この個数 Y が (R, G, B) = (S/2, S/2, 0) のときの組み合わせの数になる(残りは全部 G に振り分ければ良いので)。
  5. 対称性より余事象が全部で 3X-3Y 通りあることが分かり,答えは 3^N-(3X-3Y) mod 998244353 になる。(負の剰余がこわいのでとりあえず mod をたくさん足しておくとバグらない)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement