1187cのC. Vasya、配列をcodeforces

問題の意味:そこにn個の長い列があり、そしてmは事実を持っている、LLに、RRサブストリングを小さくするか、ドロップされていません。競合出力NO、または構造。

まず第一に、すべてのピックが[LL + 1、RR]に1をラベルに該当しません。その後、クエリ1の場合、出力NOは、すべてそこにあります。そうでなければ、nは最初に、1に遭遇し、(i)は(I-1)、(I)、0に遭遇(I-1)= = -1。

#define MKP make_pair
 使用して名前空間はstdを、
CONST  ダブル EPS = 1E- 8 ; 
typedefの長い 長いLON。
typedefのペア <経度、経度> PII。
CONST経度SZ = 100010、SSZ = 0、APB = 26、INF = 0x7FFFFFF、MOD = 十億七
LON N、M、ANS [SZ]。
ブールVST [SZ]。
構造体ND {
     int型の型、LL、RR。
    ND(INT A = 0INT B = 0INT C = 0 ):タイプ(A)、11(B)、RR(C){} 
}。
ND [SZ]。
 
無効のinit()
{ 
    CIN >> N >> Mと、
    以下のためにint型 iは= 1 ; I <= M + I)
    { 
        int型の型、LL、RR。
        CIN >>入力>> LL >> RR。
         [I] = ND(型、LL、RR)。
        もし(タイプ== 1のためのINT J = LL + 1、J <= RR; ++ j)はVST [J] = 1 
    } 
    のためにint型 iは= 1 ; I <= M + I)
    { 
        int型の型、LL、RR。
        入力 =における[I] .TYPE。
        LL =  [I]の.ll、RR = [I] .rr。
        もし(タイプ== 0 
        { 
            BOOL OK = 0 以下のためのint型 J = 11 + 1 ; J <= RR; ++ J)
            { 
                場合 = OK(VST [j]が!)1 
            } 
            もし(!OK)
            { 
                coutの << " NO " << てendl;
                返します
            }
        } 
    } 
    COUT << " YES " << ENDL。
    ANS [ 1 ] = N。
    以下のためにint型 I = 2 ; iは= N <; ++ I)
    { 
        場合(VST [i])とANS [I] =のANS [I- 1 ]。
        他の ANS [i]を=のANS [I- 1 ] - 1 ; 
    } 
    のためにint型 i = 1 ; iが<= N; ++ I)
    { 
        場合(I =!1)COUT << "  " 
        coutの << ANS [i]は、
    } 
    COUTの <<endl; 
} 
 
ボイドワーク()
{ 
    
} 
 
int型のmain()
{ 
    のstd :: IOS :: sync_with_stdio(0 )。
    // freopenは( "D:\\ 1.TXT"、 "R"、STDIN)。
    // 経度casenum。
    // cinを>> casenum。
    // のための(LONティム= 1;ティム<= casenum; ++ TIM)
    { 
        INIT()。
        作業(); 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/gaudar/p/11521581.html