蒟蒻求助
查看原帖
蒟蒻求助
1198444
mengfancheng楼主2025/7/23 00:39

30pts #5~11WA

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	long long x[n+10]={0};
	long long qzh[n+10]={0};
	for(int i=1;i<=n;i++){
		cin>>x[i];
		qzh[i]=x[i];
	}
	int sum=2;
	while(sum<=n){
		int i=sum;
		for(i=i;i<=n;i+=sum){
			qzh[i]+=qzh[i-(sum/2)];
		}
		sum*=2;
	}
	for(int ll=0;ll<m;ll++){
		int te,xx,y;
		cin>>te>>xx>>y;
		if(te==1){
			int cs=1;
			while(xx<=n){
				qzh[xx]+=y;
				xx=xx>>(cs);
				xx=xx<<(cs);
				xx+=pow(2,cs);
//				cout<<xx<<endl;
				cs++;
			}
		}else{
			long long a[15]={0},b[15]={0},xb=14,asum=0,bsum=0;
			xx--;
			while(xx>0){
				a[xb]=xx%2;
				xx/=2;
				xb--;
			}
			xb=14;
			while(y>0){
				b[xb]=y%2;
				y/=2;
				xb--;
			}
//			for(int i=0;i<15;i++){
//				cout<<a[i]<<" ";
//			}
//			cout<<endl;
//			for(int i=0;i<15;i++){
//				cout<<b[i]<<" ";
//			}
//			cout<<endl;
			xb=0;
			for(int i=0;i<15;i++){
				if(b[i]==1){
					xb+=pow(2,14-i);
					bsum+=qzh[xb];
//					cout<<bsum<<endl;
				}
			}
			xb=0;
			for(int i=0;i<15;i++){
				if(a[i]==1){
					xb+=pow(2,14-i);
					asum+=qzh[xb];
				}
			}
//			cout<<asum<<" * "<<bsum;
			cout<<bsum-asum<<endl;
		}
//		cout<<"---------------"<<endl;
//		for(int i=1;i<=n;i++){
//			cout<<qzh[i]<<" ";
//		}
//		cout<<endl<<"---------------"<<endl;
	}
	return 0;
}
2025/7/23 00:39
加载中...