[Luogu1052]川[動的計画]

P1052川

QAQへのへのPPT上のコンテンツ

DPは、容易に以下の方法を発生します
  • F [x]は、Xジャンプ座標位置上の石の数を表し、段差の最小値を必要とします
  • F [X] =分(F [XJ] +石[X])、S <= J <= T
  • しかし、X ^ 9 10まで、計算することは困難です
  • しかし、100までの石は、これまで離れてから、多くの場合、二つの石、石の時間座標の前にいくつかの連続する点が到達可能である、見つけるのは簡単です。
それを証明するために少し:
場合S!= T、Pの存在は、このようなS <= p <p + 1 <= T明らかGCD(P、P + 1)= 1という
Q> = P×(P-1)、P * X +(P + 1)* yは、Qは、非負整数解でなければならない=すなわち、Qはわずか数p個のステップを歩いて十分に大きい場合ステップのp + 1、そう正確に歩いて行ける距離の長さQ
証明:ときQ = P(P-1)ので、X = P-1、Y = 0; Q 1が増加すると、X - 、++ Y; X 0後に減少、yがこの時間Qに、P-1 = =ようにと、P ^ 2-1、次いでQは、次に、X = P、Y = 0をせ増加し続けます。
 
そして、それはなぜこれほど多くのQAQの離散的な追加の数かどうかは明らかではありません
#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#define MAX(X、Y)(X)>(Y)?(X):( Y)
 #defineする MIN(X、Y)(X)>(Y)?(y)を:( X)
 の#define LL長いです長い
 の#define RGレジスタ
 のconst  int型 N = 200 + 5、M = 1E7 + 5、INF = 0x3f3f3f3f、P = 99999997 int型、L、S、T、N、ANS = INF、[N]、D [N]、STO [M]、F [M]。
テンプレート < クラス T> ボイド RD(T&X){ 
    X = 0INT W = 0CHAR CH = 0 しばらく W | = CH ==(isdigit(CH)!)' - '、CH = getchar関数();
    一方、(isdigit(CH))X =(X << 1)+(X << 3)+(CH ^ 48)、CH = GETCHAR()。
    X?= W - X:X; 
} 

int型のmain(){
 //     freopenは( "in.txt"、 "R"、STDIN)。
    RD(L)、RD(s)は、RD(T)、RD(n)は、
    以下のためにint型 i = 1 ; iは= N <; ++ I)RD([I])。
    ソート(A + 1、A + N + 1); [ 0 ] = 0、[N + 1 ] = リットル;
    以下のためにint型 i = 1 ; iは= N <; ++ I)D [I] =([I] -a [I- 1 ])%3000 以下のためにint型 i = 1 ; iは= N <; ++ I)[I] [I-= 1 ] + D [i]は、STOを[I] = 1 
    memsetの(F、INF、はsizeof (F))。
    F [ 0 ] = 0、L = [N]。
    int型 iは= 1 ; iが= L + T <++ {i)が
         ためINT J = Sであり; J <= T; ++ j)の
             場合(IJ> =0)F [I] = MIN([I]、F [I-F J])。
        F [I] + = STO [I]。
    } 
//     のための(iはLを= int型、iが= L + T <; ++ i)がprintfの( "%のD"、[I] F)。
    以下のためにint型 Iを= Lを、iがL + Tを<; ++ I)ANS = MIN(ANS、F [I])。
    printf(" %dの" 、ANS)。
    リターン 0 ; 
}
 

 

おすすめ

転載: www.cnblogs.com/lxyyyy/p/11234389.html