NOIPシミュレーションスーパーツリー

アイデア:まず、ないDP [i]は、スーパーの木は、それが直接転送考えることができるI-パスの数を表し、何かをしようとするまず、この状態のタイトルを考えるのは難しいもちろんのこと、とする複合体の観点でその質問を見ていません唯一、我々はサブツリーパスの数がここで開始されていることを前提と2つの砂丘、ツリーのルートを描画する必要がある、我々は何を得ることができますか?まず、それが想定される= SUM DP [-I。1] ^ 2

理解シール1.中央2つのサブツリーは、すぐに種を合計し、

2.オペレータ別ルートノード、合計の種類があり、

3.左 - >ルートルート|| - > *、左側の接続ルートのいずれかから選択される、2 DP [I-1] * DP [I-1]?問題。2本の道路が互いに接続されているか、常に私は道を追加する方法をされていますか?

転送する場所に、私たちは状態を細分化することができる場所がたくさんの問題への解決策ではありません、ここで停止、に転送され、状態を定義する方法、そして私たちは、私は、組み合わせ数学のトピックにあった、最後に言うことができませんまた、いくつかの認識は、プログラムの数を求めてDP、多くのプログラムは、転送する段階との間のリンクに基づいて、状況によっては、いわゆる分類です。そして、あなたは答えを得ることができ、今の状態の分類は、かなり混沌としている同棲の状態で転送することが困難になり、私たちはそれらを置くパスが相互に排他的として定義され、何の共通点、すなわちませんが、これは確かに不完全で、それ例えば、多くのパスが元の問題を交差があり、そのようにしても再帰的定義は、データ範囲と組み合わせて答えを、取得することができないであろうことができ、我々はそれが、私はJの記事を選出したくないものを代表して、一次元の背後にある状態で、別の増加を期待します転送3は、宮ない得ることができますいくつかの互いに素プログラムを使用することができるようになりますように、いくつかのパスは、状況に交差があります。困難がに学生を転送する際に残っている場合は、この質問は、比較的簡単です見てとるDeepinC問題解決のスーパーの詳細を、!チャンは、カードのトリックが付属しています

 

書式#include <cstdioを> 
する#include <iostreamの> 
の#include <cmath>
 使用して 名前空間はstd;
CONSTの INT K = 320 長い 長いF [K] [K]。
int型RD()
{ 
    チャー CC = GETCHAR()。
    長い 長い S = 0、W = 1 一方(CC < ' 0 ' || CC> ' 9 '){ 場合(CC == ' - ')= W - 1 ; CC = GETCHAR();}
    一方(CC> = ' 0 ' && CC <= ' 9 ')S =(S << 3)+(S << 1)+ CC- ' 0 '、CC = GETCHAR()。
    リターンの* ワット。
} 
int型のmain()
{ 
    のconst  int型 N = RD()、MOD = RD()。
    F [ 1 ] [ 1 ] Fを= [ 1 ] [ 0 ] = 1%にMOD。
    (登録をint i = 1 ; iが<= N iが++ 
    { 
        int型KK =分(N-iは+ 2、iは<= 91 << I:300 )。
        ため(登録INT J = 0 ; jは<= KK + 1、J ++ 
        { 
            ため(登録int型のk = 0 ; K <= KK + 1 ; kは++ 
            { 
                場合(J + K> N + 1ブレークCONSTレジスタINTの和= 1LL * F [I] [J] * F [i]が[K]%MOD。
                F [I + 1 ] [J + K] =(F [I + 1 ] [J + K] + 1LL *和(*2 * J + 2 * K + 1 ))。
                F [I + 1 ] [J + K + 1 ] =(F [I + 1 ] [J + K + 1 ] + 和)。
                F [I + 1 ] [J + K- 1 ] =(F [I + 1 ] [J + K- 1 ] + 1LLの*合計*(J + K)*(J + K- 1))%MOD。
            } 
        } 
    } 
    のprintf(" %LLDする\ n "、F [N] [ 1 ])。
} 
/ * 
G ++ 1.cpp -o 1 
./1 
3 100 
* / 
/ *
G ++ 1.cpp -o 1 
./1 
1 1 
* /
コードの表示

 

おすすめ

転載: www.cnblogs.com/starsing/p/11211024.html