NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去。由于NK中学的学生很多,在火车开之前必须清点好人数。
初始时,火车上没有学生。当同学们开始上火车时,年级主任从第一节车厢出发走到最后一节车厢,每节车厢随时都有可能有同学上下。年级主任走到第m节车厢时,他想知道前m节车厢上一共有多少学生,但是他没有调头往回走的习惯。也就是说每次当他提问时,m总会比前一次大。
标签:输入 amp string problems bbs lang upd -- val
10 7
A 1
B 1 1
B 3 1
B 4 1
A 2
A 3
A 10
0
1
2
3
对于全部数据,1≤n≤5×105,1≤k≤105。
解题思路:裸的树状数组查询,修改。
#include<bits/stdc++.h> #include<queue> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<iostream> #define REP(i, a, b) for(int i = (a); i <= (b); ++ i) #define REP(j, a, b) for(int j = (a); j <= (b); ++ j) #define PER(i, a, b) for(int i = (a); i >= (b); -- i) using namespace std; const int maxn = 1e7 + 5; int n, k,p[maxn]; int lowbit(int a) { return a & (-a); } int sum(int a) { int val=0; while (a) val += p[a], a -= lowbit(a); return val; } void update(int a,int w) { while (a<=n)p[a] += w,a+=lowbit(a); } int main(){ cin >> n>>k; int cur,z; while (k--) { char q; cin >> q>>cur; if (q == ‘A‘) { cout << sum(cur) << endl; } else if (q == ‘B‘) { cin >> z; update(cur, z); } else { cin >> z; update(cur, -z); } } }
标签:输入 amp string problems bbs lang upd -- val
原文地址:https://www.cnblogs.com/czy-power/p/10357659.html