アレイ牛の[DP]

制限時間:C / C ++ 1秒、2秒言語は、他の
スペースの制限:C / C ++ 32768K、他の言語は65536kも
64ビットIOフォーマット:LLD%

タイトル説明

このような牛肉アレイ
1:長さN-
2:すべての数Kに1〜
3:連続A、B、A <= Bの2つずつの任意の数の(!%のB = 0)条件は、少なくとも一つの設定

1E9 + 7モジュロの条件を満たすように、アレイの合計数を依頼します

説明を入力します。

入力二つの整数は、N- K 

。1≤N-≤10
。100000≤1≤K

出力説明:

整数出力
例1

エントリー

コピー
2 2

輸出

コピー
3
例2

エントリー

コピー
9 1

輸出

コピー
1
例3

エントリー

コピー
3 3

輸出

コピー
15
例4

エントリー

コピー
2 1234

輸出

1515011
 

問題の意味:後者の条件は、1E9 + 7をダイ、種の数の倍数でない前に、長さnの配列を求めて、1-kを有する第一の組成物を満たすは数未満又は後者に等しいです。

アイデア:現在の数が(A満足2つだけ条件)が満たされる前に、数が可能数の倍数であっても、後者に等しい数未満であるが、現在および前の数の数よりも大きい数である後にのみポストの数の倍数、このプログラムが確立されなかった、音符がプログラム条件数より少ない満たされていない解決の数は、プログラムの総数とプログラム満たされない場合、それが簡単に減算し、それは現在の長さのために、DP [I] [j]を提供されます配列の長さが長iが2以上である場合、番号jは、I-1と、最後に追加され、いくつかのタイプのプログラムの数がkの一種であり、1である場合、私は、アレイの端部は、プログラムjの数でありますプログラムkに1から番号とjの長さは、I、kに1から長さnの配列の最終的な計算であっても、I-1は、プログラムの終了時に配列の長さの数に加えJ jを減算する複数の、より大規模なプログラムの数プログラムと回答の数は、モジュラス1E9 + 7を計算することに注意されます

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3 typedefの長い 長いLL。
4  のconst  int型 AMN = 1E5、MOD = 1E9 + 7 5  int型の DP [ 15 ] [AMN]。
6  INT メイン(){
 7      int型N、K。
8つ      のLL S、S1、ANS = 0 9つの      IOS :: sync_with_stdio(0 )。
10      CIN >> N >> K。
11      のmemset(DP、0はsizeof DP)。
12     以下のためにint型 i = 1 ; iは= Kを<; iは++)DP [ 1 ] [I] = 1 13      のためにint型 I = 2 ; iが++; iが<= N ){
 14          、S = 0 15          のためにINT J = 1 ; J <= K J ++ 16              のS =(S + DP [I- 1 ] [j])%MOD。
17          のためのint型 J = 1 ; J <= K; J ++ ){
 18              、S1 = 0 19              のためのint型L = J + J、L <= K; L + = J)
 20                  、S1 =(S1 + DP [I- 1 ] [L])%MOD。
21              DP [I] [J] + =(S-S1)%MOD。
22          }
 23          }
 24      のためにINT J = 1 ; J <= K; J ++)ANS + = DP [N] [j]は、ANS%= MOD。
25      のprintf(" %LLDする\ n " 、ANS)。
26 }

 

おすすめ

転載: www.cnblogs.com/brainm/p/11285826.html