これは、比較的単純な文言ツリーラインを提供します
また、ダウン、構築聞かないでください
ツリー全体が白のドットの数を維持するために、各変化が正確範囲と全範囲を見つけるために白い斑点があります
我々は完全にカバーされているアクセスすることが判明した時間間隔を変更する場合は、直接返すことができ、必要が変化しないように
その答えは、出力は、 TRは、[1] の白色点の範囲の合計数であるので、答えは 、N-TR [1]
#include <iostreamの> する#include <cstdioを> の#define LSONのK << 1、L、中間 の#define rsonのK << 1 | 1、中間+ 1、R用 の#define LS K << 1つ の#defineのRS K << 1 | 1 の#define半ば((L + R)>> 1) 使用して 名前空間STDを、 const int型 MAXN = 200005 ; INTのN、M。 INT TR [MAXN << 2 ]。 インラインボイド更新(int型K){ TR [K] = TR [LS] + T R [RS]。 } ボイド変化(int型 K、int型の L、INTR、int型のx、int型Y){ 場合(TR [K] == R-L + 1)のリターン; もし(L == X && Y == R){ TR [K] = R-L + 1 。 返します。 } であれば(Y <= MID)変化(LSON、X、Y) それ以外の 場合(X> 半ば)の変化(rson、x、y)は、 他の変化(LSON、X、MID)、変化(rson、ミッド+ 1 、Y); アップデート(K)。 } int型のmain(){ scanf関数(" %D%dの"、&N、&M)。 int型X、Y。 一方、(M-- ){ scanf関数(" %D%dの"、およびX&Y)。 変化(1、1 、nは、X、Y) printf(" %d個の\ n "、N-TR [ 1 ])。 } 戻り 0 。 }