研究ノートプログラミングDPダイナミック - の高度なバージョン

それは区の肝臓をGUGUすることができますどのように言うのために?

DPは、理解やブログDPの会場から学習を開始するために基盤を依頼する必要はありません:DP動的研究プログラミング上の注意

これは、我々は2つの部分に分割されますブログです(あなたがのGUGU区ませんので...) 記事にはいくつかのDPがより困難である、次の様々なDPを最適化するための手段です。

-正スタート- (なぜ私は最近、このようなブログを書きました)

バックパックツリーDP、非常に鬼畜対象におけるDPの木。

パケットのバックパックツリー:単純にこれだと言います。私は研究に行くにもグループ化されたバックパックを知りません。

ボードの質問で見てみましょう:選択科目

唯一の父から> - その後、我々はツリー構造を格納することで、この関係を考えるのは簡単ですので、各コース以来の前提条件は、一つだけである(最初に考えるのがベストです)問題を分析しますノードに子ノード。ただし、データは森の話題を形成することになります。それについて考え、なぜ?

はい、それは複数のコースがない前提条件かもしれません。しかし、我々は学んだ木DPは、どのようにそれを行うには?シンプルで、私たちは木のうち、全体の聖歌を所有しています。

しかし、元の親と子の関係は、それがどのように全体を変更することはできませんか?私たちは、新しい「仮想クラス」0を作成する「いいえ前提条件コースの」前提条件として出てきます。我々は、すべての木の森は、私たちは木を取得するように、新しい--0ルートノードに接続されて置くこと。

アイデアは、それは素晴らしいではないでしょうか?この質問は、ツリーの実行中にグループ化されたバックパックに変換されます。

その後、我々は状態を設定しています。しませんか?そして、あなたは学ぶことはありません前のブログはまだ読んで?ファスト確認してください。

私たちは、DPは、一般的に、各ノードは、最初の次元としてのX以前、木の話しました...

その後、何?(ハンマー)、パケット・バックパックああ。ああ...

レッツF [X、j]はjのコース缶をルートとサブツリーを選択するために、我々はxから得る最高の信用を示します状態を取得し、我々はそう。

非常に簡単なことではないでしょうか?状態方程式は、BAAを知らない出ていますか?その後、我々はプッシュバーをプッシュするために一緒に働きます。

我々は、我々はどのy∈son(X)の場合と、この選択科目場合のx、SIZ(x)は、xの子ノードの数を示し、説明のいくつかの変数の使いやすさを定義し、息子(X)×子ノードのコレクションを表してみましょう修理...出会いΣci= T-1の基礎には、いくつかのコース(表記CI)でのyをルートとサブツリーから選択することができ、我々は最高のクレジットを修復しよう。我々は、物品のSIZ(X)基を有していて、各物品は、J-1、記事K、Fの値を[Y、K]のi番目のグループのk番目の項目の体積は、バックパックの総体積は、J-1となっている持っています。

我々は、各子ノードXの状態に遷移するために、各グループ、すなわち、アップからアイテムを選択します。私たちは「バルク品」にしたいので、私たちのxを完了した後、J-1はまた、何より、J-1、クレジット(価値)の最大の場合よりも、コースを選択していないことがあります。記事のように、私たち「どのくらいのyのレッスン」という。

その後、我々木DP、答えを得ます:

 

ボイド DP(INT X){ 
    F [X] [ 0 ] = 0 ;
     のためのINT I = 0 ; I <息子[X] .size(); I ++ ){
         int型 Y = ソン[X] [I]、
        DP (Y)は、
        のためにINT J = M + 1。 ; J> = 1 ; T--)// 仮想ノード必須、それは1 + mである。
            ためのint型 K = 0 ; K <= J- 1。 ; K ++)/記事/グループkの項目(K選択コース)のk番目のグループのX体積における 
                F [X] [J] = MAX(F [X] [J]、F [X] [JK] + F [Y] [K]); 
    } 
}

 

主機能部は、我々は、i番目のコースの値としてすべてのF [i]が[1]を読む - >説明:私はクラスのサブツリーを選択するから - >値をf [i]が[1 ]。

その後、我々は木のDPを議論し続けています。

当社は現在、被験者は無根樹指定された場合、ツリーDP DPの問題は、ツリーのルートツリーで行われていますか?

私たちは、DPは、統計的な答えをしなければならない各ツリーのルートに位置する必要がありますか?もちろんない、そしてそれは暴力気に入らない場合。

この一般的な問題のために、我々は解決するために、二次スキャン(変更rootメソッド)を使用します。

これは、DPのとして知られている変更のルートDP、何?あなたはタイトルをしたいですか?

ノー、(爆発ハンマー犬の頭)...取る蓄積学位を

これはPOJ上の質問への私の最初の時間のようです、ピオは、私が質問どのようにブラシオフしませんでしたが、品質は非常によさそうだフック。

しかし、私はいつもロスバレーの.jpgのように、EMMは、あなたが理解していないと言いますか?Chromeは翻訳が付属して、皮なしていない肌。

まあ。

あなたを与えるツリー水中での(そんなにナンセンスを翻訳するためにわざわざ)

N-1商品の水性チャネルツリー、n個のノードを有し、各チャネルは、最大水容量を有するCを[ X ] [ Y ] C [X] [Y]は、Y最大水容量点Xを表し、ソース水は、ノードは、その子ノードに水を通る水の流量を流す等しく、水の流れがどの子ノードを超えないようにしながら、無制限の水を受信することがツリーのリーフノードのルートノードとして、ソースポイントにポイントし続けることができます偶数側父親最大水容量、最大呼掛け源水流、N- 2 × 10 ^ 5。

実際には、簡単に言えば、それは木の上の最大流量を求めているが、我々はソースを知りません。なぜネットワークが流れませんか?ハッシュは、データがあまりにも犬です。

于是我们来快乐地DP啊。不给我源点?我每个点都DP一遍

要是这样能过我还写它干嘛。

不过还是先讲讲怎么DP吧。假设我们知道根节点是x。

那么我们来拆问题了。你看这个问题它又大又烦,不如把它拆掉。

考虑用树形DP拆问题。对于每个节点x,我们发现它只能流向自己的子树,于是可以这样设状态,我们用f[x]表示在以x为根的子树中,以x为源点流向子树的最大流量。然后我们对于每个子树都可以拆成小子树,再拆,再拆...就到叶节点了,问题就得解了。

切,刚刚还那么傲娇的大问题现在还不是被脱的一件不剩,看到DP的魅力了吧?再大的问题,只要你是DP题,我就能把你拆掉。

然后我们就很自然的得到了转移方程式:

$$f[x]=\sum\limits_{\text{y∈son(x)}} \begin{cases} min(f[x],c(x,y))& \text{x=0}\\ c(x,y)& \text{x!=0} \end{cases}$$

Latex新手写上面那个公式写了半个小时...

待填坑

おすすめ

転載: www.cnblogs.com/light-house/p/11827497.html