題意
有一個N行M列的矩陣,你可以選擇一些位置塗黑,其它位置塗白。
對一個矩陣,我們計算出一個長度爲N的序列A,以及兩個長度爲M的序列B和C:
令Ai爲第i行第一次出現黑色的位置的列號,如果第i行全白,則爲M+1;
令Bi爲第i列第一次出現黑色的位置的行號,如果第i列全白,則爲N+1;
令Ci爲第i列最後一次出現黑色的位置的行號,如果第i列全白,則爲0;
請你計算,有多少種不同的{A,B,C}三元組可能得到,輸出答案對998244353取模後的結果。
對於20%的數據,1≤N≤6,1≤M≤3;
對於50%的數據,1≤N≤200,1≤M≤200;
對於額外5%的數據,保證M=1;
對於額外15%的數據,1≤N≤2000,1≤M≤3;
對於100%的數據,保證1≤N≤8000,1≤M≤200。
題解
由於列的限制比較複雜,依次考慮每一列,對於新的一列,這列會有一些黑格子是它所在行的第一個黑格子,如果直接考慮這個方案,還需要知道每行是否出現過,不太能做。
對沒有出現過黑格子的行先不考慮,對於新增的行考慮插到原來的行之間,枚舉插完後的兩個端點,乘上一些組合數即可。發現這個組合數可以通過楊輝三角的關係轉爲一個組合數,ntt優化即可。