没事了
by 正式AFO @ 2018-10-25 11:31:54
```
i&(-1)
```
真是强
by 岚雪 @ 2018-10-25 11:35:27
@[_yxl_gl_](/space/show?uid=54131) 其实我是不了解其本质的
by 正式AFO @ 2018-10-25 11:45:42
@[5743377_2002](/space/show?uid=36701)
```cpp
i & (-i) = LowBit(i)
```
用于求二进制下从后往前最后一个一
by 岚雪 @ 2018-10-25 13:57:09
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
int n, m;
int x, y, k, u;
int num[100000], tree[100000], f[100000];
int a_sum(int i){
int s=0;
while(i>0){
s += tree[i];
i -= i&(-i);
}
return s;
}
void update(int i,int value){
while(i<=n){
tree[i]+=value;
i+=i&(-i);
}
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> num[i];
f[i] = num[i]-num[i-1];
}
for(int i = 1; i <= n; i++)
for(int j = i-(i&(-i))+1; j <= i; j++)
tree[i]+=f[j];
for(int i = 1; i <= m; i++){
cin >> u;
if(u == 1){
cin >> x >> y >> k;
update(x, k);
k = k * (-1);
update(y+1, k);
}
else{
cin >> x;
cout << a_sum(x) - a_sum(x-1)<<endl;
}
}
return 0;
}
```
不知道问题出在哪里
by 正式AFO @ 2018-10-30 15:21:19