高速電力
1のtypedef ロング ロングLL; 2 。3 LLのmod_pow(LL X、N- LL、LL MOD) 。4 { 5 LL RES = 1 ; 図6 ながら(N> 0 ) 7。 { 8。 IF(N&1。 )// (N-%2 IF 1 ==) 9。 RESの=のRES * X%MOD; 10 X = X * X%MOD; // xの正方形は 11。 N - >> = 1 ; // N-N- = / 2最後の丸め 12である } 13であり、 リターンRES; 14 }
フェンウィックツリー
クエリー間隔と
拡張:クエリ間隔値を最も貧しいです
1 INT lowbit(INT X)// lowbit(X)K ^ 2を表す 2 { 3。 リターン X&( - X); 4。 } 5。 6。 ボイド更新(INT X、INT K)// 位置におけるX Kが増加 7 { 8 一方、(X <= N-) 9。 { 10 C [X] + = K; 11 X + = lowbit(X) 12である } 13である } 14 15 int型 SUM(INT X) 16 { 17。 INT RES = 0 ; 18は 、一方(X> 0 ) 。19 { 20 RES + = C [X]; 21である X- = lowbit(X) 22である } 23れる リターンRES; 24 } 25 26であるのmemset(C、0、はsizeof(C)); // 入力がクリア覚え 27 28 のために(int型 I = 1を I <= N; Iは++)// フェンウィックツリー治療はアレイ1の指標である 29 { 30 scanfのを("Dの%」、&A [I]); 31は、 更新(I、[I]); // 初期値の各要素の開始は、対応する位置0プラス[I]に 32 }