P3431 [POI2005] AUTバス(二次元の半順序、フェンウィックツリー)

https://www.luogu.org/problem/P3431

二次元半順序古典的なタイトル、プレフィックス最大下フェンウィックツリーのメンテナンス、DPの考え。

1つ の#defineバグ(X)COUT <<#xが<< << X << ENDL "が"
 2  の#define IOのstd :: IOS :: sync_with_stdio(0)
 3  の#define ULLのunsigned long長い
 4の#include <ビット/ 。STDC ++ H>
 5  の#define ITER ::イテレータ
 6  の#define PA対<整数、LL>
 7  の#define PP対<整数、PA>
 8  使って 名前空間  STDを、
9  の#defineは、長い長いっ
 10  の#define MK make_pair
 11  の#define PB一back
 12  の#define SE第
 13  の#defineFiの第
 14  の#define << 1 O LS
 15  の#define RS 0 << 1 | 1つの
 16  のconst  int型 N = 1E5 + 5 17  int型N、M、Q。
18  INT MX = 1E9。
19  頁のP [N]。
20  int型C [N]。
21  INT 低(LL x)から{
 22      リターン X&( - X)。
23  }
 24  空隙追加(int型のx、int型のY){
 25      ながら(X <= Q){
 26個の          C [X] = MAX(C [x]は、Y);
27          X + = 低い(X)。
28      }
 29  }
 30  INT QU(INT X){
 31      INT RES = 0 32      一方、(X){
 33の          RES = MAX(RES、C [X])。
34          のx = (x)は低いです。
35      }
 36の     リターンRES。
37  }
 38  INT [N]。
39  INT メイン(){
 40      IO。
41      CIN >> N >> M >> Q。
42      のためのint型 I =1 ; I <= Q; iは++ ){
 43          CIN >> P [i]は.fi >> P [i]は.se.fi >> P [i]は.se.se。
44          [I] = P [i]は.se.fi。
45      }
 46      ソート(A + 1、A + 1 + Q)。
47      INT =ユニークな(+ NA 1、A + 1 + Q)-A- 1 48      ソート(P + 1、P + 1 + Q)。
49      LL ANS = P [ 1 ] .se.se。
50      INT X = LOWER_BOUND(A + 1、A + 1 + NA、P [ 1 ] .se.fi) -A;
51      追加(X、ANS)。
52      のためには、int型、I = 2 ; I <= Q; iは++ ){
 53          、INT X = LOWER_BOUND(A + 1、A + 1 + NA、P [i]は.se.fi) - 54の          LL RES = QU(X)+ P [i]の.se.se。
55の          ANS = MAX(ANS、RES)。
56          (X、RES)を加えます。
57      }
 58      のprintf(" %LLDする\ n " 、ANS)。
59 }

 

おすすめ

転載: www.cnblogs.com/ccsu-kid/p/11548118.html