POJ2373ディングパス(モノトーンキュー)

これより詳細で、我々は最初の状態を定義する質問、F [i]が最小に処理時間を表す数値私は、実際には、最後のチューブの左端、我々メダルので、これらは、私は、牛の場所することはできません左端のために

我々は単調性を発見した後、実際には、分+ 1を取るが、範囲内にするときは注意するようにキューに、図2a〜2bとの間であることを

私は前のトピックとみなし、ここでは制限を認めなかったので、私はミスを犯した。この時間は、各チューブのスコープもあるので、場所も、配置する必要がなければならないということです。

#include <iostreamの> 
する#include <キュー> 
の#include <マップ> 
の#include <ベクトル> 
の#include <cstdioを> 
する#include <アルゴリズム> 
の#include <スタック> 
の#include <CStringの>
 使用して 名前空間STDを、
typedefの長い 長いLL。
CONST  INT N = 1E6 + 7 const  int型 INF = 0x3f3f3f3f int型ST [N];
構造体ノード{
     int型のL、R。
} S [N]。
INT F [N]。
INTのQ [N]。
int型メイン(){
     int型I。
    整数N、M。
    INT 、L、B。
    CIN >> N >> L >> B。
    以下のために(iは= 1 ; iが<= N; I ++ ){ 
        CIN >> S [i]は.Lは>> S [i]の.R。
        INT J = S [i]が.L + 1 J ++; J <S [I] .R 
            ST [J] = 1 
    } 
    のmemset(F、0x3fをはsizeof F)。
    F [ 0 ] = 0 ;
    int型J;
    int型 HH = 0 ;
    int型 TT = 0 ; 
    Q [ 0 ] = 0 ;
    INT I = 2、I + =; I <= L * 2 ){
        一方(HH <= TT && Q [HH] <I- 2 * B)
          HH ++ 一方(HH <= TT && F [Q [TT]]> = F [I- 2 * A])
          TT - 
       Q [ ++ TT = I- 2 * 場合(ST [i]は)
         継続します; 
       F [I] = F [Q [HH] + 1 
    }
    もし(F [L] <INF / 2 
        COUT << F [L] << ENDL。
    
        COUT << - 1 << てendl; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/ctyakwf/p/12462989.html