萌新,刚学,RE,求助
查看原帖
萌新,刚学,RE,求助
217743
sc84bbs楼主2020/4/28 16:57

RT

言 简 意 赅

#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<sstream>
#include<cstdio>
#include<vector>
#include<stdio.h>
#include<cctype>
#include<ctime>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<fstream>
//#pragma GCC optimize(3)
//#pragma GCC target("avx")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("inline")
//#pragma GCC optimize("-fgcse")
//#pragma GCC optimize("-fgcse-lm")
//#pragma GCC optimize("-fipa-sra")
//#pragma GCC optimize("-ftree-pre")
//#pragma GCC optimize("-ftree-vrp")
//#pragma GCC optimize("-fpeephole2")
//#pragma GCC optimize("-ffast-math")
//#pragma GCC optimize("-fsched-spec")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("-falign-jumps")
//#pragma GCC optimize("-falign-loops")
//#pragma GCC optimize("-falign-labels")
//#pragma GCC optimize("-fdevirtualize")
//#pragma GCC optimize("-fcaller-saves")
//#pragma GCC optimize("-fcrossjumping")
//#pragma GCC optimize("-fthread-jumps")
//#pragma GCC optimize("-funroll-loops")
//#pragma GCC optimize("-fwhole-program")
//#pragma GCC optimize("-freorder-blocks")
//#pragma GCC optimize("-fschedule-insns")
//#pragma GCC optimize("inline-functions")
//#pragma GCC optimize("-ftree-tail-merge")
//#pragma GCC optimize("-fschedule-insns2")
//#pragma GCC optimize("-fstrict-aliasing")
//#pragma GCC optimize("-fstrict-overflow")
//#pragma GCC optimize("-falign-functions")
//#pragma GCC optimize("-fcse-skip-blocks")
//#pragma GCC optimize("-fcse-follow-jumps")
//#pragma GCC optimize("-fsched-interblock")
//#pragma GCC optimize("-fpartial-inlining")
//#pragma GCC optimize("no-stack-protector")
//#pragma GCC optimize("-freorder-functions")
//#pragma GCC optimize("-findirect-inlining")
//#pragma GCC optimize("-fhoist-adjacent-loads")
//#pragma GCC optimize("-frerun-cse-after-loop")
//#pragma GCC optimize("inline-small-functions")
//#pragma GCC optimize("-finline-small-functions")
//#pragma GCC optimize("-ftree-switch-conversion")
//#pragma GCC optimize("-foptimize-sibling-calls")
//#pragma GCC optimize("-fexpensive-optimizations")
//#pragma GCC optimize("-funsafe-loop-optimizations")
//#pragma GCC optimize("inline-functions-called-once")
//#pragma GCC optimize("-fdelete-null-pointer-checks")
//void write(int asd,bool ssd){
//	if(asd==0)return;
//	write(asd/10,true);
//	putchar(asd%10^'0');
//}
//int read(){
//    int x=0,f=1;
//	char ch=getchar();
//    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
//    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
//    return x*f;
//}
using namespace std;
const int maxn=100005;
int n,m;
int ans[maxn<<2],lazy[maxn<<2],a[maxn]; 
int ls(int qqq){
	return qqq<<1;
}
int rs(int qqq){
	return qqq<<1|1;
}
void pushup(int qqq){
	ans[qqq]=ans[ls(qqq)]+ans[rs(qqq)];
}
void build(int qqq,int l,int r){
	lazy[qqq]=0;
	if(l==r){
		ans[qqq]=a[l];
		return;
	}

	int mid=(l+r)>>1;
	build(ls(qqq),l,mid);
	build(rs(qqq),mid+1,r);
	pushup(qqq);
	
}
void tagger(int qqq,int l,int r,int kkk){
	lazy[qqq]+=kkk;
	ans[qqq]+=kkk*(r-l+1);
}
void pushdown(int qqq,int l,int r){
	int mid=(l+r)>>1;
	tagger(ls(qqq),l,mid,lazy[qqq]);
	tagger(rs(qqq),mid+1,r,lazy[qqq]);
	lazy[qqq]=0;
}
void upd(int qqq,int ul,int ur,int l,int r,int kkk){
	if(ul<=l&&ur>=r){
		tagger(qqq,l,r,kkk);
		return;
	}
	pushdown(qqq,l,r);
	int mid=(l+r)>>1;
	upd(ls(qqq),ul,ur,l,mid,kkk);
	upd(rs(qqq),ul,ur,mid+1,r,kkk);
	pushup(qqq);
}
int que(int qqq,int ql,int qr,int l,int r){
	int res=0;
	if(ql<=l&&r<=qr){
		return ans[qqq];
	}
	pushdown(qqq,l,r);
	int mid=(l+r)>>1;
	res+=que(ls(qqq),ql,qr,l,mid);
	res+=que(rs(qqq),ql,qr,mid+1,r);
	return res;
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	build(1,1,n);
	for(int i=0;i<m;i++){
		int qwq;
		cin>>qwq;
		if(qwq==1){
			int x,y,k;
			cin>>x>>y>>k;
			upd(1,x,y,1,n,k);
		}else{
			int x,y;
			cin>>x>>y;
			cout<<que(1,x,y,1,n);
		}
	}
	return 0;
	}



2020/4/28 16:57
加载中...