#AGC019E. [AGC019E] Shuffle and Swap

[AGC019E] Shuffle and Swap

题目描述

0 0 1 1 からなる同じ長さの二つの文字列 A = A1 A2 ... An A\ =\ A_1\ A_2\ ...\ A_n B = B1 B2 ... Bn B\ =\ B_1\ B_2\ ...\ B_n があります。 A, B A,\ B に含まれる 1 1 の個数は等しいです。

あなたは次のアルゴリズムによって A A を変化させることにしました。

  • a1 a_1 , a2 a_2 , ..., ak a_k を、A A 1 1 が出現する位置の添字とする。
  • b1 b_1 , b2 b_2 , ..., bk b_k を、B B 1 1 が出現する位置の添字とする。
  • a, b a,\ b の要素をそれぞれ無作為に並び替える。これらの無作為な並び替えは一様かつ独立である。
  • 1 1 から k k までの各 i i に対して、順に Aai A_{a_i} Abi A_{b_i} の値を入れ替える。

この手順のあと、文字列 A, B A,\ B が一致する確率を P P とします。

さらに、Z = P × (k!)2 Z\ =\ P\ \times\ (k!)^2 とします。明らかに、Z Z は整数です。

Z Z 998244353 998244353 で割った余りを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

A A B B

输出格式

Z Z 998244353 998244353 で割った余りを出力せよ。

题目大意

给出两个长度为 n(n104)n(n\le 10^4)01\texttt{01}AABB。两个串均恰有 kk1\texttt{1}。令 a1,2,,ka_{1, 2, \cdots, k}b1,2,,kb_{1, 2, \cdots, k} 分别表示 AABB 中所有 1\texttt{1} 出现的位置。

aabb 等概率随机排列,按 i=1,2,,ki = 1, 2, \cdots, k 的顺序交换 AaiA_{a_i}AbiA_{b_i}。令 PP 表示操作完成后 AABB 相等的概率,求 P×(k!)2P\times(k!)^2 在模 998244353998244353 意义下的值。

感谢@skylee 提供翻译

1010
1100
3
01001
01001
4
101010
010101
36
1101011011110
0111101011101
932171449

提示

制約

  • 1  A = B  10,000 1\ \leq\ |A|\ =\ |B|\ \leq\ 10,000
  • A, B A,\ B 0 0 1 1 からなる。
  • A, B A,\ B に含まれる 1 1 の個数は等しい。
  • A, B A,\ B には 1 1 が少なくとも一つ含まれる。

部分点

  • 1  A = B  500 1\ \leq\ |A|\ =\ |B|\ \leq\ 500 を満たすデータセットに正解すると、1200 1200 点が与えられる。

Sample Explanation 1

最初の二つのステップで、a = [1, 3] a\ =\ [1,\ 3] , b = [1, 2] b\ =\ [1,\ 2] となります。a, b a,\ b の要素を無作為に並び替えたあとの結果としてありうるものは次の 4 4 つです。 - a = [1, 3] a\ =\ [1,\ 3] , b = [1, 2] b\ =\ [1,\ 2] 。はじめ A = 1010 A\ =\ 1010 A1 A_1 A1 A_1 の入れ替え後 A = 1010 A\ =\ 1010 A3 A_3 A2 A_2 の入れ替え後 A = 1100 A\ =\ 1100 。 - a = [1, 3] a\ =\ [1,\ 3] , b = [2, 1] b\ =\ [2,\ 1] 。はじめ A = 1010 A\ =\ 1010 A1 A_1 A2 A_2 の入れ替え後 A = 0110 A\ =\ 0110 A3 A_3 A1 A_1 の入れ替え後 A = 1100 A\ =\ 1100 。 - a = [3, 1] a\ =\ [3,\ 1] , b = [1, 2] b\ =\ [1,\ 2] 。はじめ A = 1010 A\ =\ 1010 A3 A_3 A1 A_1 の入れ替え後 A = 1010 A\ =\ 1010 A1 A_1 A2 A_2 の入れ替え後 A = 0110 A\ =\ 0110 。 - a = [3, 1] a\ =\ [3,\ 1] , b = [2, 1] b\ =\ [2,\ 1] 。はじめ A = 1010 A\ =\ 1010 A3 A_3 A2 A_2 の入れ替え後 A = 1100 A\ =\ 1100 A1 A_1 A1 A_1 の入れ替え後 A = 1100 A\ =\ 1100 。 この 4 4 つの結果のうち、3 3 つで A = B A\ =\ B となっています。よって、P = 3 P\ =\ 3 / 4 4 であり、Z = 3 Z\ =\ 3 となります。

Sample Explanation 2

A A の要素の入れ替えによって A A が変化することはなく、したがって必ず A = B A\ =\ B となります。

Sample Explanation 3

三回の A A の要素の入れ替えがどのように起こっても、A A に含まれる 1 1 は適切な位置に移動します。