分塊 線段樹模板

2021-08-02 08:10:09 字數 1091 閱讀 1166

線段樹的一些操作其實用分塊也可以很方便就做掉,至於時間效率也不會慢很多,主要是好寫

對於區間加法一樣用lazy陣列標記,如果區間覆蓋整塊,則把塊給標記上,否則暴力加減,維護sum和lazy陣列

#include "cmath"

#include "cstdio"

#include "cstdlib"

#include "cstring"

#include "iostream"

#include "algorithm"

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

#define rep(i,a,b) for(i=(a);i>=(b);--i)

#define mm(a,b) memset(a,b,sizeof(a))

#define ll long long

#define inf 999999999

using namespace std;

ll read()

while(c >='0' && c <='9')sum = sum*10 + c-'0',c = getchar();

return sum*fg;

}const int maxn = 100010;

ll sum[maxn];

int n , m ;

int block[maxn] ;

ll a[maxn] ;

int blo ;

ll lazy[maxn];

void add(int x,int y,int k)

if(bloa != blob)

}for(i , bloa+1 , blob-1)

}ll query(int x,int y)

if(bloa != blob)

} for(i ,bloa+1, blob-1)

return ans;

}int main()

int x,y,k,type;

for(j, 1, m)

else

} return 0;

}

//the end

AK(線段樹 分塊)

ak 問題描述 noipoipoip考場上 馬里奧 順利地切掉了前兩題,他只要再最後一就可以 ak 了。最後一題是這樣的 給你個數字序列,每次查詢段區間和了。最後一題是這樣的 給你個數字序列,每次查詢段區間和了。最後一題是這樣的 給你個數字序列,每次查詢段區間和了。最後一題是這樣的 給你個數字序列,...

線段樹模板(模板)

參考部落格 持續更新。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img xhrgdjcd 1613976863463 區間儲存在陣列中的下標對應為 12 3 4 5 6 7 8 9 10 11 12 13 14 15 四部分單點更新 根據題目的要求編寫自己的pushup,query...

線段樹模板

include include include using namespace std const int size 10010 struct node the node of line tree class linetree void updatem void updateline public ...