P1052川(凝縮点)

中国のタイトル

 

アイデア:

 

それでは、どのようですか?

私たちは、小さな石の数がわかりません

S <時間t  S (距離がされたときにtが重複するLCM(S、T) すなわちS T だけ各2石我々は時間の最小公倍数)、この後の各点の到達可能以上  SXT  距離収縮SXT  その上に

なぜ、この減少はできますか?

我々が懸念された後にのみ石の数が、だから<時間tは、  S 及びTは、(距離がある場合に一致するLCMは(S、T)であり、S T 時間の最小公倍数)およびその後の各点缶到着

 

ときの==約t最後に、​​特別な注意判決

 

#pragma GCCの最適化(3、 "Ofast"、 "インライン")// O3优化
の#pragma GCC最適化(2)// O2优化
の#include <アルゴリズム> 
の#include < ストリング > 
の#include < 文字列・H> 
する#include <ベクトル> 
の#include <マップ> 
書式#include <スタック> 
の#include < 設定 > 
書式#include <キュー> 
書式#include <math.h>の
書式#include <cstdioを> 
する#include <iomanip> 
書式#include <TIME.H>
書式#include <ビットセット> 
の#include<cmath> 
の#include <sstream提供> 
の#include <iostreamの> 
する#include <CStringの> に#define LL長い長
 の#define LS NOD << 1個
 の#define RS(NOD << 1)+1
 の#define PII対<整数、整数>
 #define MP make_pair
 の#define PB一back
 の#define INF 0x3f3f3f3f CONST ダブル EPS = 1E- 10 const int型 MAXN = 2E5 + 10 CONST LL MOD = 1E9 + 7 int型はsgn(ダブル A){ 返す <-epsを?-



  

1:<EPS?01 ;}
 使用して 名前空間STDを、

INT F [MAXN]。
int型の石[MAXN]、new_stone [MAXN]、VIS [MAXN]。

int型のmain(){ 
    IOS :: sync_with_stdio();
    int型L; 
    cinを >> L;
    INT 、L、R、N。
    CIN >> L >> R >> N。
    もし(L == R){
         int型 CNT = 0 以下のためにINT iが= 1 ; I <= N I ++ ){ 
            CINを>> 石[i]は、
            もし(石[I]%のL == 0 
                CNT ++ 
        } 
        COUT << CNT << ENDL。
        リターン 0 ; 
    } 
    のためのINT iは= 1 ; <I = N I ++ 
        CIN >> 石[I]。
    ソート(石 + 1、石+ 1個の + N)。
    INT P = L * R。
    以下のためにINT iが= 1 ; I <= N; I ++ ){
        int型の D =石[I] -石[I- 1 ];
        もし(D> = P)
            D = P。
        new_stone [I] = new_stone [I- 1 ] + D。
        VIS [new_stone [I] = 1 
    } 
    L = new_stone [N] + P。
    memsetの(F、0x3fをはsizeof (F))。
    F [ 0 ] = 0 ;
    以下のためにINT iが= 1 ; iが<= Lと、I ++ ){
         ためINT J = L; J <= R; J ++){
             もし(I> = J){
                 場合(VIS [I])
                    F [I] =分(F [I]、F [IJ] + 1 )。
                
                    F [I] =分(F [I]、F [I- J])。
            } 
        } 
    } 
    int型 ANS = INF。
    INT ; I <= L I ++ [n]はI = new_stone 
        ANS = 分(ANS、F [I])。
    coutの << ANS << てendl;
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/-Ackerman/p/12516913.html