hdu 1698 線段樹區間修改

2021-07-08 18:24:44 字數 917 閱讀 9925

【題目鏈結】

【解題報告】

區間修改的模板題目。需要打乙個set標記,表示區間(l,r)被修改為v.

在這道題目裡。一開始所有結點被賦值為1,之後給q個修改,把(l,r)修改為1,2,或3.最後求區間和。

我的寫法採用了劉汝佳在訓練指南中使用的寫法。

【參考**】

#include

#include

#include

#include

using namespace std;

const int maxn=100000+50;

int n,q;

int setv[maxn*4],sumv[maxn*4];

void maintain( int o, int l, int r )

if( setv[o]>=0 )sumv[o]=setv[o]*( r-l+1 );

}void pushdown( int o )

}void update( int o, int l, int r, int

x, int

y, int z )

else

maintain( o, l, r );

}int query( int o, int l , int r, int ql, int qr )

else

if( ql<=l && r<=qr ) return sumv[o];

else

}int main()

printf( "case %d: the total value of the hook is %d.\n" , ++kase, query( 1,1,n, 1,n ) );

}return

0;}

HDU 1698 線段樹區間修改

一道線段樹區間替換的模板題 練習一下notonlysuccess的線段樹模板 注意注意!這兩個運算符號的優先順序非常低,只要寫到就要加括號,調了兩個小時的血淚啊 include include define lson l,m,rt 1 define rson m 1,r,rt 1 1 define ...

hdu1698(線段樹 區間修改 求和)

題意 有乙個區間s 1,n 每一節si的初始價值為1。定義操作 x y val,將區間 x,y 中的每乙個小節的價值改為val。問 經過q次操作後總區間的價值是多少。1 n 1e5 0 q 1e5 演算法 資料結構 線段樹注意使用 long long scanf i64d 3 10e5我覺得不需要長...

HDU 1698 線段樹區間更新

之前一直覺得自己線段樹敲得很熟練,然後。某天。是的,就是我的資料結構周開始的時候我發現。我特麼才會單點更新是怎麼回事!只會區間查詢是腫麼回事!摔!恩。就是表達一下弱渣的心情。區間更新,用到延遲操作。延遲操作應該是這麼回事。線段樹的優越性就是體現在,第一是二分查詢,第二是區間操作。當我們需要多次對區間...