原模板题
请问在单点修改读入的部分
cin >> n >> m;
for (int i = 1, x; i <= n; i++) {
cin >> x;
Add(i, x);
}
Add内:
void Add(int x, int y) {//x=i,y=x;
while (x <= n) {
Yuan[x] += y;
x += lowbit(x);
}
}
读入时,为什么可以直接把参传进Add,不应该是在后面要修改时再传进去?
再者,参进了函数后会被怎么处理,蒟蒻有些分不清这里传进去和后面传进去的目的
谢谢dalao,望轻喷
#include <bits/stdc++.h>
using namespace std;
int n, m, Yuan[2000010];
int lowbit(int k) {
return k & (-k);
}
void Add(int x, int y) {//x=i,y=x;
while (x <= n) {
Yuan[x] += y;
x += lowbit(x);
}
}
int Result(int x) {
int ans = 0;
while(x!=0){
ans+=Yuan[x];
x-=lowbit(x);
}
return ans;
}
int main() {
cin >> n >> m;
for (int i = 1, x; i <= n; i++) {
cin >> x;
Add(i, x);
}
for (int i = 0; i < m; i++) {
int a, b, c;
cin >> a >> b >> c;
if (a == 1) {
Add(b, c);
}
if (a == 2) {
cout << Result(c)-Result(b-1)<<endl;
}
}
return 0;
}