比赛 SYOI 专题 4:分块(根号杂烩) 评测结果 AAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 此账号已注销 运行时间 2.667 s
代码语言 C++ 内存使用 19.59 MiB
提交时间 2024-04-18 18:04:16
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,aa,a[1000000],t[1000000],b1,b2,a1,a2,Max,q;
int lowbit(int c){ return c&-c; }
char m[10];
int main(){
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
    cin>>n;
    for(int i = 1; i <= n; i++)
    {
    	cin>>a[i];
    	aa = lowbit(i);
		for(int j = 0; j < aa; j++) t[i] += a[i-j];
	}
	cin>>q;
	for(int i = 1; i <= q; i++)
	{
		cin>>m;
		cin>>a1>>a2;
		if(m[0] == 'S') 
		{
			b1 = 0;
			b2 = 0;
			for(int j = a1; j > 0 ; j -= lowbit(j)) b1 += t[j];
			for(int j = a2; j > 0 ; j -= lowbit(j)) b2 += t[j];
			cout<<b2-b1+a[a1]<<endl;
		}
		else 
		{
			a[a1] += a2;
			for(int j = a1; j <= n ; j += lowbit(j)) t[j] += a2;
		}
	}
//    for(int i = 1; i <= n; i++) cout<<t[i]<<endl;
}