線段樹的一些操作其實用分塊也可以很方便就做掉,至於時間效率也不會慢很多,主要是好寫
對於區間加法一樣用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 ...