1. 程式人生 > >【省內訓練2018-11-23】Bishop

【省內訓練2018-11-23】Bishop

【思路要點】

  • 先考慮一個子問題,在 N N N*N 棋盤的主對角線及其右下方放置 K
    K
    個不能互相攻擊的車,求方案數 f ( N , k )
    f(N,k)
    。考慮最後一行的放置情況,有遞推式 f ( N , k )
    = f ( N 1 , k ) + ( N k + 1 ) f ( N 1 , k 1 ) f(N,k)=f(N-1,k)+(N-k+1)*f(N-1,k-1)
    。觀察該遞推式的形式,不難發現其實際上等於第二類斯特林數 S ( N + 1 , N + 1 k ) S(N+1,N+1-k)
  • 在本題中,首先,象的移動方式不會改變座標 ( x , y ) (x,y) 對應的 x + y x+y 的奇偶性,我們可以將這兩類座標分開處理,再將結果卷積起來,得到答案。
  • 考慮 x + y x+y 為偶數的座標,我們將棋盤旋轉 45 45 度,我們得到了一個類似於上述子問題的問題形式,每一行可以放入車的方格數為 1 , 1 , 3 , 3 , 5 , 5 , 7 , 7 , . . . 1,1,3,3,5,5,7,7,... ,換而言之,偶數行的主對角線上是不允許放入棋子的。
  • 考慮對這條新加入的限制進行容斥,記 M = N 2 M=\lfloor\frac{N}{2}\rfloor ,新問題的方案數為 g ( N , K ) g(N,K) 。列舉強制放入棋子的方格數 i i ,則有 g ( N , k ) = i = 0 M ( 1 ) i ( M i ) S ( N i + 1 , N k + 1 ) g(N,k)=\sum_{i=0}^{M}(-1)^i\binom{M}{i}S(N-i+1,N-k+1)
  • 展開斯特林數,有 g ( N , k ) = i = 0 M ( 1 ) i ( M i ) 1 ( N k 1 ) ! j = 0 N k + 1 ( 1 ) N k + 1 j ( N k + 1 j ) j N i + 1 g(N,k)=\sum_{i=0}^{M}(-1)^i\binom{M}{i}\frac{1}{(N-k-1)!}\sum_{j=0}^{N-k+1}(-1)^{N-k+1-j}\binom{N-k+1}{j}j^{N-i+1}
  • 交換求和順序,有 g ( N , k ) = 1 ( N k 1 ) ! j = 0 N k + 1 ( 1 ) N k + 1 j ( N k + 1 j ) i = 0 M ( 1 ) i ( M i ) j N i + 1 g(N,k)=\frac{1}{(N-k-1)!}\sum_{j=0}^{N-k+1}(-1)^{N-k+1-j}\binom{N-k+1}{j}\sum_{i=0}^{M}(-1)^{i}\binom{M}{i}j^{N-i+1}
  • 由二項式定理,有 g ( N , k ) = 1 ( N k 1 ) ! j = 0 N k + 1 ( 1 ) N k + 1 j ( N k + 1 j ) ( j 1 ) M j N M + 1 g(N,k)=\frac{1}{(N-k-1)!}\sum_{j=0}^{N-k+1}(-1)^{N-k+1-j}\binom{N-k+1}{j}(j-1)^Mj^{N-M+1}
  • N T T NTT 對其卷積即可,時間複雜度 O ( N L o g N