求助!!!orz!!!
  • 板块灌水区
  • 楼主emo_zkt
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/28 21:49
  • 上次更新2024/5/29 13:28:19
查看原帖
求助!!!orz!!!
482163
emo_zkt楼主2024/5/28 21:49

P2357我为什么TLE???!!!在线等,挺急的

以下是我的代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=200005;
int n,m,c[N],ans;
inline int Read(){
    int x=0,f=1;
    char c=getchar();
    while(!isdigit(c)){
		if(c=='-')f=-1;
		c=getchar();
	}
    while(isdigit(c)){
		x=x*10+c-48;
		c=getchar();
	}
    return x*f;
}
int lowbit(int x){
	return x&(-x);
} 
void change(int p,int v){
	while(p<=n){
		c[p]+=v;
		p+=lowbit(p);
	}
}
int query(int p){
	int res=0;
	while(p){
		res+=c[p];
		p-=lowbit(p);
	}
	return res;
}
void change1(int l,int r,int k){
	for(int i=l;i<=r;i++){
		int j=i;
		while(j<=n){
			c[j]+=k;
			j+=lowbit(j);
		}
	}
}
void treea(){
	n=Read();m=Read();
	for(int i=1;i<=n;i++){
		int x=Read();
		change(i,x);
	}
	while(m--){
		int op;
		op=Read();
		if(op==1){
			int l,r,k;
			l=Read();r=Read();k=Read();
			change1(l,r,k);
		}
		else if(op==2){
			int k;
			k=Read();
			change(1,k);
		}
		else if(op==3){
			int k;
			k=Read();
			change(1,-k);
		}
		else if(op==5){
			printf("%lld\n",query(1));
		}
		else if(op==4){
			int l,r;
			l=Read();r=Read();
			ans=query(r)-query(l-1);
			printf("%lld\n",ans);
		}
	}
}
signed main(){
	treea();
	return 0;
}
2024/5/28 21:49
加载中...