質問の意味:M×N個のグリッドに、黒と白の塗装のみ、3のない場合は、ユニコムの四角が描かれていない尋ね、どのように多くのコーティング?結果MOD 1E9 + 7
言いたいことが直接のソリューション:
最初の行の最初のケースを分析し、再発関係Fを行う[I]、F [1]は明らか2、F [2]また、明らかに図4に示すように、任意でよいです。
次いで、F [3]は、最初の2点は、同じ色、それが連続的である場合、同じ色、前と異なる色だけ場合に連続的である必要があります。我々F [i]がFに拡張されている[I] [j]を、私は、最初のブロックの数を示し、jは最初の二つの連続する2かのi番目を表します。次いで、F [i]の種類の数に分割されます。
(1)種の数の二つの連続次いで、同じF [I]の正面及びFの[I - 1]いくつかの同一の、および状態が不連続となります。すなわち:F [i]が[0] + = F [I - 1] [1]。
(2)最初の2つの連続する異なる、現在の2つのケースが、連続状態に、前、又は前と同じ異なる続けます。いずれか:F [i]が[0] + = F [I - 1] [0]、F [i]を[1] = F [I - 1] [0]。
総漸化式を取得するには:
F [i]が[0] = F [I - 1] [0] + F [I-1] [1]。
F [i]を[1] = F [I - 1] [0]。
F [1] [0] 2 =。F [1] [1] = 0。
それはi番目のブロックである場合、存在する[1]種の溶液F [i]が[0] + F [i]は、
//実際には、方法は、N段階の着色としても使用することができ、各時間順序又は二次に、ラダー法がいくつあるか尋ねます。
二つの理解はFeibonaqiを指し関係を再発方法について話しています。m番目の項目Feibonaqiのn個のアイテムの両方の放出。
最初の行を決定した後、その後、我々はすべての行への再帰。
最初の行は、2つの連続した色を有する場合、各次の行は、前の行と正確に反対しなければなりません。あなたはとても必至同じ3つの連続した同じような状況を持っている場合。
証明:同じライン上の2つの連続した場合、次の行が逆ではないが、その後も三つに、連続一方と同じ同じ2つが存在しなければなりません
ラインは、二つの連続で同じでない場合は、不完全なラインとは対照的に存在しなければなりません
黒と白、黒、白、黒の行動に設定してください
その後、次のラインは左右同じであること、さらには3つの同一にし、黒と白と黒または白を有していなければなりません。
それらが同一である場合、両者は必然的にそれに接続されている同じレベルに遭遇します
白、黒、白、黒と白
黒と白、黒、白黒
同一またはエレン下に黒と白のエレン超えること
したがって、以下の結果のいずれか一方のみ、前の行のそれぞれ反対。
最初の行は、(合計2種類)は、2つの連続した同一の色のいずれか白黒白黒白黒白黒白黒又は白黒白黒単色でない場合、次の行は、銀行、または反対に完全に等しくすることができます。二つの同一とだけ連続線。これはまた、同じことは、全く連続三列ではない、すなわち、一番上の行と同じ外挿、mの値はFeibonaqi項目である、再帰ダウン各行に対応しています。両者の初期状態が満たされていないので、2つだけの連続した同一の色は、2×M Feibonaqiあります
結果は結果内のすべての残りの行は、固定された、連続的な色の最初の行です。2×Nの合計-2項目Feibonaqi
非連続的な色の最初の行は、残りの項目タイプは、2×両方FeibonaqiアイテムM、Feibonaqi mで
2回の結果の合計数(Feibonaqi Feibonaqi M + N項目項目)-2
以下は、コードACある(見つからない行もそれほど複雑な点ゲームFeibonaqiです。)
1つの#include <iostreamの> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4 のconst int型 MOD = 1E9 + 7 。 5 のconst int型 MAXN = 1E5 + 50 。 6 LL DP [MAXN] [ 3 ]。 7 INT メイン(){ 8 int型N、M。 9 CIN >> N >> M。 10 DP [ 1 ] [ 0 ] = 2 ; 11 DP [ 1 ] [ 1] = 0 ; // 初始化 12 のために(int型 I = 2、iがn = <; iは++){ // 递推 13 DPを[I]が[ 0 ] DPを= [I- 1 ] [ 0 ] + DP [I- 1 ] [ 1 ]; 14 DP [I] [ 1 ] = DP [I- 1 ] [ 0 ]。 15 DP [I] [ 0 ]%= MOD。 16 DP [I] [ 1 ]%= MOD。 17 } 18 LLのA、B、C。 19 = 0、B = 1、C = 0 。 20 のために(int型 I = 0 ; iがN <; Iは++ ){ 21 C = A + B。 22 = B。 23件の B =のC; 24 Cの%= MOD。 25 } 26 LL RES = DP [M] [ 0 ] + DP [M] [ 1 ] - 2 + B * 2。 // 得结果 27 のres%= MOD; 28 coutの<< RES << てendl; 29 リターン 0 ; 30 }