[DP] luogu P2467エルフ部族

https://www.luogu.org/problem/P2467

分析

私たちは、(シーケンスが法的ケースにある)いくつかの奇妙な自然を取得する必要があります:

プロパティ1:IとI + 1が隣接していないとき、IとI + 1切り替えが実行可能な選択肢であります

性質2:各数がn-AI + 1に変換されるため、現実的な選択肢、山と谷で、状況が変わります

プロパティ3:法的なシーケンスは、完全に逆さまにそれが正当なシーケンスであります

次いで、F [i] [j]はiが最初のピークとしてjに〜数字1であります

次いで、式を有する:[i] [j]は、F [i]は[J-1] + F [I-1]〜[I-J + 1] = F

1と2それぞれ満たす自然、考えるように描くことができます

最後に、統計後のプログラム・バイ・2フィニッシュの数、対応するプロパティ3

 

書式#include <iostreamの> 
の#include <cstdioを>
 使用して 名前空間はstdを、
typedefの長い 長いLL。
CONSTの INT N = 4.2e3 + 10 int型のn; 
LL pを、[F 2 ] [N]、ANS。

INT メイン(){ 
    scanf関数(" %d個の%のLLD "、&​​N&P)。
    F [ 0 ] [ 2 ] = 1 INT I = 3、Q = 1 ; iが<= N; iは++、Q ^ = 1 のためにint型、J = 2、J <= I; J ++ 
            F [Q] [J] =(F [Q] [J- 1 ] + F [Q ^ 1 ] [I-J + 1 ])%のP。
    以下のためにint型 iは= 2 ANS =(ANS + F [N&iは++; iがn = <)1 ] [i])と%のP。
    printf(" %のLLD " ANS *、2%のP)。
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/mastervan/p/11367337.html