CF 1187C Vasyaと配列

質問の意味:

  アレイ構成は、特定の条件を満たし:

  1。

    1 LR:範囲AI <内にlr(I + 1)=

  2。

    範囲内のLR LR 0は、(i + 1)>があり愛

アイデア:

  最後に見た各非増加範囲は、範囲内の単位で、完全ではないまず、インクリメンタル位置マークの、非増加の範囲がよく増分の範囲内にある場合には、明らかに構築することは不可能である、または構築することができます

  質問があります:

    そのような増分範囲である1-2、3-4、2-3、この点を解決するために、決意2-3 1-4 1-4は、実際には2つの増分の範囲である範囲内であろう、非増分であります質問、我々は最初の位置の増分の範囲をマークしていない、その範囲の増分は2-2、4-4で、1-4のマークは非増加範囲を確認し、2つの単位の範囲を区別することができ、それはまた、最初は無視しますの位置を確認します

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include < ストリング >
 4の#include <キュー>
 5の#include <CStringの>
 6の#include <cmath>
 7の#include <アルゴリズム>
 8  使って 名前空間STD。
9 typedefの長い 長いLL。
10 typedefの符号なしの長い 長いULL。
11 typedefの長い ダブルLD;
12のtypedef対< INTINT > PII。
13 #define MEM(X、N)のmemset(X、N)
 14  の#define FOR(iは、、B)(I =(A)がINT iが++; iが=(B)<)のための
 15  の#defineを PB一back
 16  の#define最初F
 17  の#defineの第
 18  の#define LB LOWER_BOUND
 19  の#define UB UPPER_BOUND
 20 LL GCD(LL A、LL b)は{ 戻り Bの== 0A:GCD(B、%のB);}
 21  空隙 fast_io(){ios_base :: sync_with_stdio(0)。cin.tie(0 );}
 22  CONSTの LDのPI = 4 *のATAN((LD)1 );
23  のconst  int型 INF = 0x3f3f3f3f 24  ///////////////////////////////////////////////// ///////////
 25  のconst  int型 MAXN = 1E5。
26  BOOL VIS [ 1010 ]。
27  int型 N、M、D [ 1005 ] [ 2 ]。
28  ボイドのinit(){
 29      CIN >> N >> M。
30      のmemset(VIS、01010 )。
31  }
 32  
33  int型のmain(){
 34     INIT();
 35      int型 CNT = 0 ;
 36      ながら(M-- ){
 37 [          int型T、Lは、R
 38は          CIN >> T >> L >> R&LT;
 39          IF (T)
 40              のmemset(VIS + L + 。11、RL)である; // 。タグの範囲の増分、有料より注目フロント1 
41であり、         他は
42れる              D [CNT]が[ 0 ] Lが= D [CNT ++] [ 1 ] = R&LT; // レコード非増加の範囲
43である     }
 44れる      FOR (I、0、CNT- 1//チェック各非増加範囲は、増分範囲内である
45      {    
 46が         INTフラグ=で0 ;
 47          INT J = D [I] [ 0 ] + 1。 ; J <= D [I] [ 1 ]; J ++)// そのフロント+ 1、最初の位置を無視注
48          {
 49              IF(!VIS [J]を){ // ポイントは範囲がある場合、この構成は、ポイントの前のポイント未満である場合、私に聞かせてインクリメントされない
50                  フラグに= 1 51である                 BREAK ;
 52である             }
 53である         }
 54れる         IF(フラグに!)// インクリメンタル出力の範囲NOのすべての点
55         {
 56              COUT << " NO \ n " 57              リターン 0 ;
58          }
 59      }
 60      COUT << " YES \ n " 61      INT S = N + 3 62      (I、FOR 1 、N)
 63      {
 64          であれば(VIS [i])とCOUT << S <<(I == N?"" "  ")。// 递增范围全部一样
65           coutの<< -S-<<(I == nは?""  ); // nonincrementing範囲、立ち下がり出力
66      }
 67      COUT << ENDL;
 68      リターン 0 ;
 69 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/rookiezjz/p/11201381.html