luoguダイナミックプログラミング口胡コレクション

P1831レバレッジ数

正の解決策かどうかを言う:×

明確ビットDPの数が、開始することができないと感じ、実際の数は、18ビットDP、各列挙支点であってもよいし、トルクは各数について計算することができるが、トルクが0に貢献とします

書式#include <マップ> 
書式#include < 設定 > 
書式#include <ctimeの> 
の#include <cmath> 
の#include <キュー> 
の#include <スタック> 
の#include <ベクトル> 
の#include < 文字列 > 
の#include <ビットセット> 
の#include <cstdioを> 
#include <cstdlib> 
の#include <CStringの> 
する#include <sstream提供> 
の#include <iostreamの> 
する#include <アルゴリズム> 
の#include <機能>
 使用して 名前空間STD。
#define(I、x、y)のための式(I = xをint型;方には<= yと; iが++)  
 の#define(I、x、y)は_forための式(I = xをint型; I> = Y; i--)
 の#define MEM(F、X)のmemset(F、X、はsizeof(F))  
 の#defineのSca(X)のscanf( "%dの"、およびX)
 の#define SCA2(X、Y)のscanf( "%D%dの"、およびX 、&​​Y)
 の#define SCA3(X、Y、Z)のscanf( "%D%D%D"、およびX&Y、およびZ)が
 #defineする SCL(X)のscanf( "%のLLD"、およびX)  
 の#defineぷり(Xは)のprintf( "%d個の\ n"、X)
 の#define PRL(X)のprintf( "%LLDする\ n"、X)  
 の#define CLR(U)のために(INT i = 0; iが= Nを<; I ++)は、U [I] .clear();
#defineは長い長いLL
 の#define ULL符号なしの長い長い  
 の#define融点make_pairの
 に#define PIIペア<int型、int型>
#define PIL対<int型、長い長い>
 の#define PLLペア<長い長い、長い長い>
 の#define PB一back
 の#define第FI
 の#define SE第二
のtypedefベクトル < INT > VI。
LL {)(LL X読み取り = 0、F = 1チャー C = GETCHAR()。一方、(C < ' 0 ' || C> ' 9 '){ もし、(C == ' - ')、F = - 1 ; C = GETCHAR();}
 一方(> = C ' 0 ' && C <= ' 9 '){X = X * 10 + C - ' 0 ' ; C = GETCHAR();} 戻りのx *のF;}
 CONST  ダブル PI = ACOS( - 1。);
constの ダブル EPS = 1E- 9 CONST  INT MAXN = 110 const  int型 INF = 0x3f3f3f3f const  int型 MOD = 1E9 + 7 int型N、M、K、今。
INT STR [ 20 ]。
LL DP [ 20 ] [ 3000 ]。
LLのDFS(int型の POS、int型のval、int型の制限){
     場合(POS!)戻りヴァル== 0 ;
    もし(ヴァル< 0戻り 0 ;
    もし(リミット&&〜DP [POS] [ヴァル]!)戻りDP [POS] [ヴァル]。
    LL ANS = 0 int型 =上限をアップSTR [POS]:?9 以下のためにint型 i = 0 ; iが<=最大、iは++ ){
        ANS + = DFS(POS - 1、ヴァル+ iは(POSを* -今)、限界&&(I == アップ))。
    }
    もし DP [POS] [ヴァル] =(制限!)年。
    返す歳;
}
LL {(LLのX)を解きます
    もし(!x)が復帰 1 INTは L = 0 
    LL Mは =のX。
    一方、{(M)
        L ++; STR [L] = Mの%10 
        M / = 10 
    }
    LL ANS = 0 以下のためにint型 i = 1 ; iが= Lを<; iは++ ){
        MEM(DP、 - 1 )。 = I;
        年間 + = DFS(L、01 )。
    }
    返却年- (1 - 1 );
}
INT {main()の
    LL Lを読み取る=()、R = リード()。
    PRL((R)を解く - (L解く- 1 ))。
    リターン 0 ;
}
コードの表示

 

 

P2939 [USACO09FEB]リメイクトレイルを刷新

正の解決策かどうかを言う:√

これは、[I] [j]は、点I jが直接メンテナンスに高速道路、ダイクストラ最も短絡されている表す最短メンテナンスDISのオリジナルタイトルであります

 

P2198キルアリ

正の解決策かどうかを言う:√

X - - YはDP [X] [Y] xがカラムを通る放射線、カラムにY放射線の最小値、nは干渉の列番号を表すと思われます

DP [X] [Y] =分(DPの[X - 1] [Y] +(X - 1)* G×(T + Yの* B)、DP [X] [Y - 1] + X * G * (T +(Y - 1)* B、DP [X] [Y] +(X + R)* G×(T + Yの* B) 

 

P4766 [CERC2014]宇宙の侵略者

正の解決策かどうかを言う:×

離散間隔DPの後

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MAXN = 6010 ;
const  int型 INF = 0x3f3f3f3f int型N;
構造体ノード{
     int型のL、R、D。
    ノード(INTは L = 0INTの R = 0INT D = 0 )、L(リットル)、R(R)、D(D){}
}ノード[MAXN]。
int型のハッシュ[MAXN]。
int型DP [MAXN] [MAXN]。
INT のmain(){
     int型の T。scanf関数(" %のD "、&T)。
    一方、(T-- ){
        scanf関数(" %のD "、&​​N)。int型 CNT = 0 ;
        int型 i = 1 ; iが<= N iが++ ){
            scanf関数(" %D%D%D "、およびノード[I] .L&ノード[I] .R&ノード[I] .D)。
            ハッシュ[ ++ CNT] =ノード[I] .L。ハッシュ[++ CNT] = ノード[I] .R。
        }
        ソート(ハッシュ + 1、ハッシュ+ 1本の + CNT)。
        CNT =ユニーク(ハッシュ+ 1、ハッシュ+ 1 + CNT) -ハッシュ- 1 int型 i = 1 ; iが<= N iが++ ){
            ノード[i]は.L = LOWER_BOUND(ハッシュ+ 1、ハッシュ+ 1本の + CNT、ノード[i]が.L) - ハッシュ。
            ノード[I] .R = LOWER_BOUND(ハッシュ+ 1、ハッシュ+ 1本の + CNT、ノード[I] .R) - ハッシュ。
        }
        INT LEN = 1 ; LEN <= CNT; LEN ++ ){
             ためのint型、L = 1、L + LEN - 1 <= CNT; L ++ ){
                 int型、R = L + LEN - 1 INTの ID = 0 以下のためにint型 I = 1、N = iは<; iは++ ){
                     場合(ノード[i]が.L <L ||ノード[I] .R> R)続けますもし(!ID ||ノード[ID] .D <ノード[I] .D)ID = I。
                }
                もし(!{ID)
                    DP [L] [R] = 0 ;
                    続け;
                }
                DP [L] [R] = INF。
                int型 ; K <=ノード[ID] .R kは++、K =ノード[ID] .L {)
                    DP [L] [R] =分(DP [L] [R]、DP [L] [K - 1 ] + DP [K + 1 ] [R] + ノード[ID] .D)。
                }
            }
        }
        printf(" %d個の\ n "、DP [ 1 ] [CNT])。
    }
    リターン 0 ;
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/Hugh-Locke/p/11681770.html