問題の意味:そこに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 = 0、INT B = 0、INT 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 。 }