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前的每乙個元素的修改都是對後面所有元素的修...