セグメントツリーブラシタイトルレコード

BZOJ5334:[Tjoi2018]数学

  • あまり裸木のライン、怒っていると推定問題への解決策を確認するために子供用の靴を考えます。
  • セグメントツリーのメンテナンス操作
  • それはフェンウィックツリーを考えた製品の接頭辞があるが、除算の余りがありますので。だから、それはまだ、セグメントツリー
  • コード:
    1つの#include <ビット/ STDC ++ H>
     2  の#define Nmaxを100010
     3  の#define TN T [ノード]
     4  の#define SL(ノード<< 1)
     5  の#define SR((ノード<< 1)| 1)
     6   
    7  使用 名前空間はstd;
    8 typedefの長い 長いLL。
    9  構造体segt {
     10      のint L、R。
    11      LLのV;
    12 } T [Nmax個* 4 ]。
    13  LL MOD、N。
    14   
    15  空隙ビルド(int型 L、int型の R、INTのノード){
     16      tn.v = 1 17      tn.l = L。
    18      tn.r = R。
    19      であれば(L == R)のリターン;
    20      INT半ば=(L + R)>> 1 21      ビルド(L、中、SL)。
    22      ビルド(MID + 1 、R、SR)。
    23  }
     24   
    25  ボイド UPD(int型ノード、int型のP、LLのX){
     26      であれば(tn.l == tn.r){
     27          tn.v = X。
    28          リターン;
    29      }
     30      INT半ば=(tn.l + tn.r)>> 1 31      であれば(p <= MID)UPD(SL、P、X)。
    32      他のUPD(SR、P、X)。
    33      tn.v =(T [SL] .Vの* tの[SR] .V)%MOD。
    34  }
     35   
    36解く11(int型 L、int型の R、int型ノード){
     37      であれば(tn.l> = L && tn.r <= r)は戻りtn.v。
    38      INT半ば=(tn.l + tn.r)>> 1 39      LL ANS = 1 40      もし(L <= MID)ANS =(ANS *解決(L、R、SL))%MOD。
    41      であれば(R> MID)ANS =(ANS *解決(L、R)、SR)%MOD。
    42の     リターンANS;
    43  }
     44   
    45  INT メイン(){
     46      のint T、OP。
    47      LLのNUM;
    48      cinを>> トン。
    49      一方(t-- ){
     50          のscanf(" %D%dの"、&​​N、&MOD)。
    51          ビルド(1、nは、1 )。
    52          のためにINT I = 1; I <= N。I ++ ){
     53              のscanf(" %d個の%のLLD "、&​​OP&NUM)。
    54              であれば(OPの== 1)UPD(1、I、NUM)。他の UPD(1、NUM、1 );
    55              のprintf(" %LLDする\ n "、解決(1、I、1 ))。
    56          }
     57      }
     58      リターン 0 59 }
    _f(❐_❐✧

     

おすすめ

転載: www.cnblogs.com/jiecaoer/p/11505590.html