【Bzoj1079]着色用

のみによる最終染色ので CI 数の数であり、状態のゆえ定義F [A] [B] [ C] [D] [E] [p]は発現さ= Aを1、CI Bの= 2 Cl Aを ......とE CI = 5、最後に選択されたCI = p個の A。状態転送:見つけるのp メイクP-1 回以下の選択肢を、私たちはメモリ検索を書き込むために使用することができます(コードを参照)式を書くことができます。

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  長い  N、K、S [ 6 F]、[ 16 ] [ 16 ] [ 16 ] [ 16 ] [ 16 ] [ 6 ]。
4  長い 長い(DFS のintint型 B、int型 C、int型 D、int型の E、int型P){
 5      であれば(F [A] [B] [C] [D] [E] [P])リターン[F A] [B] [C] [D] [E] [P]。
6      もし(A)[A] F [B]、[C]、[D]、[E] [P] + =(A-(P == 2))* DFS(A- 1、B、C、D、E、1 );
7      場合(B)F [A] [B] [C] [D] [E] [P] + =(B-(のp == 3))* DFS(A + 1、B- 1、C、D、すなわち、2 )。
8      であれば(C)F [A] [B] [C] [D] [E] [P] + =(C-(Pの== 4))* DFS(B + 1、C- 1、D、 E、3 )。
9      もし F(D)[A] [B] [C] [D] [E] [P] + =(D-(Pの== 5、B、C +))* DFS(1、D- 1、 E、4 )。
10      であれば(E)F [A] [B] [C] [D] [E] [P] + = E * DFS(A、B、C、D + 1、E- 15 )。
11      リターン F [A] [B] [C] [D] [E] [P] = F [A] [B] [C] [D] [E] [P]%十億七 + 十億七12  }
 13  INT メイン(){
 14      のscanf(" %のLLD "、&N)
15      のためにint型 i = 1 ; iが<= N; iが++ ){
 16          のscanf(" %のLLD "、&K)。
17の          S [K] ++ ;
18      }
 19      のためにINT I =1 ; iは<= 5 ; I ++)F [ 0 ] [ 0 ] [ 0 ] [ 0 ] [ 0 ] [I] = 1 20      のprintf(" %のLLD "、DFS(S [ 1 ]、S [ 2 ]、S [ 3 ]、S [ 4 ]、S [ 5 ]、0) - 十億七)。
21 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/PYWBKTDA/p/11247983.html