セクションBをカバー - 色をカウント

その差に一つの質問は、この問題は範囲染色であることである、染色点が問題、間隔未満1点です

左右の境界、B、B変わらず、右の境界について、左の境界は+ 1に変更することができます

統計間隔の数、それが接続されているかどうかを確認するために、各染色されたレコードの周りの境界線であるので、セクションの番号に接続されていないが+1を染色しました

1つの#include <ビット/ STDC ++。H>
 2の#include <iostreamの>
 3の#include <CStringの>
 4の#include <ベクトル>
 5  の#define LSONのL、M、RT << 1
 6  の#define rsonのM + 1、R、 RT << 1 | 1
 7  の#define MEM(X)のmemset(X、0、はsizeof(x))を
 8  使用して 名前空間STDを、
9  のconst  int型 MAXN = 8000 + 5 10  int型 COL [MAXN << 4 ]。
11  
12ベクター<ペア< 整数整数 >> CNT [MAXN]。
13 int型のn;
14  
15  空隙プッシュダウン(int型RT){
 16      であれば(!COL [RT] = - 1 ){ 
 17          COL [RT << 1 ] = COL [RT << 1 | 1 ] = COL [RT]。
18          COL [RT] = - 1 19      } 
 20      リターン21  }
 22  空隙更新(int型 L、INT R、INT C、INT L、INT R、INT RT){
 23      もし(L <= 1 && R> = R){
 24          // COUT << "tiao" << RT << " "<< L <<"" << R << ENDL。
25          COL [RT] = C。
26          リターン;
27      }
 28      プッシュダウン(RT)。
29      int型 M =(L + R)>> 1 30      であれば(L <= m)の更新(L、R、C、LSON)。
31      であれば(R> m)の更新(L、R、C、rson)。
32  }
 33  
34  
35  空隙クエリ(int型 L、int型の R、     37          // COUT << "市" << RT <<」「<< COL [RT] << ENDL。
38          。CNT [COL [RT]一back(make_pair < 整数整数 > (L、R))。
39          リターン;
40      }
 41      であれば(L == R)のリターン;
42      int型 M =(L + R)>> 1 43      照会(LSON)。
44      照会(rson)。
45  }
 46  
47  
48  INT メイン(){
 49      ながら(CIN >> N){
 50          MEM(CNT)。
51          のmemset(COL、1はsizeof (COL))。
52          のためには、int型 i = 1 ; iが<= N; iが++ ){
 53              int型 A、B、C; scanf関数(" %D%D%D "、&​​、&B、&C)。
54          //     COUT << << " "<< B <<"" << C << ENDL。
55              更新(+ 1、B、C、080001 )。
56          }
 57          クエリ(080001 )。
58          // coutの<< CNT [0] [0] .second <<
59          のためにint型 I = 0 ; iが= < 8000 ; iが++ ){
 60              INT ANS = 0 61              であれば(CNT [I] .size())ANS ++ 62              のためにINT J = 1 ; J <CNT [I] .size(); J ++ ){
 63                  
64                  であれば(CNT [I] [J] 1次回== CNT [i]は[J- 1 ] .second + 1続け;
65の                  ANS ++ ;
66              }
 67              CNT [I] .clear();
68              であれば(ANS)のprintf(" %D%D \ N " 、I、ANS)。
69          } 
 70          COUT << ENDL。
71      }
 72      リターン 0 73 }

 

おすすめ

転載: www.cnblogs.com/Msmw/p/11200351.html