hiho 1078 線段樹的區間修改

2022-04-30 12:42:14 字數 771 閱讀 7847

題意:長度為n的序列上有兩種操作

0 ql qr  輸出區間[ql,qr]和

1 ql qr v 區間[ql,qr]賦值為v

線段樹懶標基礎題,我用分塊寫了乙個,在本題資料竟然跑的飛快

#include#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)

using namespace std;

const int maxn=1e5+5;

typedef long long ll;

int val[maxn],belong[maxn],l[maxn],r[maxn],inv[maxn];

ll ans[maxn];

int n,q,op,ql,qr,v,cnt,block;

void update(int l,int r,int bt)

if(inv[bt])

rep(i,l,r)ans[bt]+=v-val[i],val[i]=v;

}void update()

}ll query(int l,int r,int bt)

ll query()

void init()

rep(i,0,cnt-1)l[i]=i*block,r[i]=(i+1)*block-1;

if(n%block)

}int main()

else

printf("%lld\n",query());

}return 0;

}

hiho 1078 線段樹區間修改

題目 分析 樹狀陣列在區間查詢和單點修改情況下效率較線段樹高一些,而無法像線段樹一樣在o logn 的時間內完成區間修改。因此使用線段樹解決。使用線段樹主要的是定義好線段樹節點的狀態。如 中注釋所說,狀態一定要明確,且容易計算!實現 include include include include i...

hiho 1078 線段樹區間修改

題目 分析 樹狀陣列在區間查詢和單點修改情況下效率較線段樹高一些,而無法像線段樹一樣在o logn 的時間內完成區間修改。因此使用線段樹解決。使用線段樹主要的是定義好線段樹節點的狀態。如 中注釋所說,狀態一定要明確,且容易計算!實現 include include include include i...

hihoCoder 1078 區間查詢線段樹

對於小ho表現出的對線段樹的理解,小hi表示挺滿意的,但是滿意就夠了麼?於是小hi將問題改了改,又出給了小ho 假設貨架上從左到右擺放了n種商品,並且依次標號為1到n,其中標號為i的商品的 為pi。小hi的每次操作分為兩種可能,第一種是修改 小hi給出一段區間 l,r 和乙個新的 newp,所有標號...