樹狀陣列的點 線修改

2021-07-25 14:30:54 字數 2167 閱讀 3766

luogu3374

已知乙個數列,你需要進行下面兩種操作:

1.將某乙個數加上x

2.求出某區間每乙個數的和

#define _file_ ""

#include

#include

#include

#include

#include

#include

#include

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

#define fd(i,a,b) for(int i=a,_end_=b;i>=_end_;i--)

#define frei(s) freopen(s,"r",stdin)

#define freo(s) freopen(s,"w",stdout)

#define ll long long

using namespace std;

#define rt return

#define inf 0x3f3f3f3f

#define pc(x) putchar(x)

#define spc putchar(' ')

#define gc getchar()

#define ln pc('\n')

#define writeint(x) printf("%d",x)

#define lowbit(x) (x&(-x))

int readuint()

rt s;

}int readint()

while(c>=48&&c<='9')

rt s*k;

}void openfile()

int n,m,d,b,a[10000010],c[1000010];

int main()

}while(m--)

if(readuint()==1)

}else

d=readuint();

while(d)

writeint(b);

ln;}

rt 0;

}

luogu3368

已知乙個數列,你需要進行下面兩種操作:

1.將某區間每乙個數數加上x

2.求出某乙個數的和

#define _file_ ""

#include

#include

#include

#include

#include

#include

#include

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

#define fd(i,a,b) for(int i=a,_end_=b;i>=_end_;i--)

#define frei(s) freopen(s,"r",stdin)

#define freo(s) freopen(s,"w",stdout)

#define ll long long

using namespace std;

#define rt return

#define inf 0x3f3f3f3f

#define pc(x) putchar(x)

#define spc putchar(' ')

#define gc getchar()

#define ln pc('\n')

#define writeint(x) printf("%d",x)

#define lowbit(x) (x&(-x))

int readuint()

rt s;

}int readint()

while(c>=48&&c<='9')

rt s*k;

}void openfile()

int c[10000010],a[10000010];

int n,m;

void add(int x,int y)

}int query(int x)

rt _;

}int main()

else

rt 0;

}

樹狀陣列區間修改

有時,我們要支援區間修改,區間查詢。線段樹可以做到。但是樹狀陣列更好寫。1d的情況 設 b i a i a i 1 則 a i b 1 b i a 1 a l b 1 b 1 b 2 b 1 b l a 1 a l l b 1 l 1 b 2 b l sum l i 1 b i 如果我們維護 b i...

樹狀陣列的區間修改求和

差分陣列 c i a i a i 1 然後可以發現 a i a 1 a 2 a 1 a 3 a 2 a i a i 1 c 1 c 2 c i 1,區間修改單點查詢 修改a l 到a r 值 的時候,只需修改c l 和c r 1 然後求一次c i 的字首和就可以。2,區間修改區間查詢 還是利用差分的...

樹狀陣列的區間修改 查詢

首先看樹狀陣列是用來求字首和比較方便的一種資料結構 sum i sigma a i sum bit x 而區間修改也不難實現 就是引入乙個差分陣列del del i 表示對i n的修改 這樣的話也就是最del i 求字首和 就能得到i n的所有修改了 因為i前的每乙個元素的修改都是對後面所有元素的修...