より多くの状態DPを考慮する必要があります
チェスのルールによって示し、二つの銃の最大
3丁の銃がある場合、彼らはお互いを傷つけることができるので、
Fを設定する[I] [J] [k]が最前列であるiおよび列jは、ピースを有し、k列の二枚
包含と除外は、作品への列の数MJKについては利用できません
私たちは、国家の正方形の部分を列挙します
<1>のみの作品を置きます
(1)石なしに行のピースを置きます
ピース離れては、石なしカラム+1、行の一部が存在することになる場合に-1
F [I] [J] [k]は、fは= [I] [J] [K] + F [I-1] [J-1] [K] *(MJ-K + 1)
(2)部分のこの部分のカラムを有しています
ピース離し、カラム-1の部分は、カラム+ 1の2つの片が存在する場合
F [i] [j]は[K]をf [i]は[J] [K] + F [I-1] [J + 1] [K-1] *(J + 1)=
<2> 2枚を入れて
(1)カラムの上に置い、カラム上のピースをしました
2枚が離れて、柱1の部分があるでしょうすると、1列の2枚、列の無い部分を持つことになります-1
F [I] [J] [k]は、F [i]は[J] [K] + F [I-1]〜[J] [K-1] * J×(MJ-K + 1)=
(2)は、2つの片を列に配置されています
場合ピース離れ、行の断片-2 +2の、カラム二枚
F [i] [j]は[K]をf [i]は[J] [K] + F [I-1] [J + 2] [K-2] *(J + 2)*(J + 1)= / 2
(3)は、二枚の列に配置されていません
場合離れ片、行+2の断片、カラムはない石-2
F [I] [J] [k]はF [I] [j]を= [K] + F [I-1] [J-2] [K] *(MJ-K + 2)*(MJ-K + 1)/ 2
コード
// // main.cppに // bzoj // // 2019年7月18日にgengyfによって作成されます。 // 著作権©2019 Yifanの庚。全著作権所有。 // の#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 名前空間gengyf { インラインINT 読み出す(){ int型、F = 1、X = 0。チャー C = GETCHAR()。 一方、(C < ' 0 ' || C> ' 9 '){ もし、(C == ' -')、F = - 1 ; C = GETCHAR();} 一方(> = C ' 0 ' && C <= ' 9 '){X = X * 10 + C- ' 0 ' ; C = GETCHAR();} 戻り F * X; } の#define MOD 9999973 int型N、M、ANS。 INT [F 105 ] [ 105 ] [ 105 ]。 インラインINT C(INT X){ リターン X *(X- 1)/ 2%モッズ; } int型のmain(){ N)=(読み取り; M = 読み取ります()。 F [ 0 ] [ 0 ] [ 0 ] = 1 。 以下のために(int型 i = 1 ; iは= <N; I ++ ) のための(INT J = 0 ; J <= Mであり、j ++ ) のための(INT K = 0 ; K <= MJあり、k ++ ){ F [I] [J] [K] = F [I- 1 ] [j] [k]は、 もし(K> = 1 F)[I] [J] [K] + = [F I-1 ] [+ J 1 ] - [K- 1 ] *(J + 1); // 置く IF(J> = 1)F [I] [J] [K] + = F [I- 1 ] [J- 1 ] [K] *(MJ-K + 1); // ないピースを置く IF(K> = 1)F [I] [J] [K] + = F [I- 1 ] [J] [ - K- 1。 ] * J *(MJ-K + 1 ); // 2を入れ、しない一体のピースで IF(K> = 2)F [I] [J] [K] + = F [ I- 1 ] [J + 2 ] [ - K- 2 ] * C(J + 2 ); //2入れ、片が配置されている IF(J> = 2)(F [I] [J] [K] + = F [I- 1 ] [J- 2 ] [K] * C(MJを+ K 2 )); // 片が配置されている、いない二つ置く F [I] [J] [K]%= MODを; } ため(int型 I = 0を I <= M; I ++の) ため(INT J = 0 ; J <= M; J ++ ){ ANS + = F [N-] [I]、[J]; ANS%= MOD; } のprintf(" %のD "、(ANS + MOD)%MOD); リターン 0 ; } } int型のmain(){ gengyf ::メイン()。 リターン 0 ; }