Warning: session_start(): open(/tmp/sess_eb6733b08f1912a07844672a81bddbb1, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430

Warning: mkdir(): No space left on device in /data/wiki/lib/plugins/dw2pdf/vendor/mpdf/mpdf/src/Cache.php on line 19
Temporary files directory "/data/wiki/data/tmp/dwpdf/145/" is not writable
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:legal_string:code [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:legal_string:code

<code> #include<bits/stdc++.h> using namespace std; const int N=500005; typedef long long ll; ll tr[N*4],a[N]; inline int ls(int o){

return o<<1;

} inline int rs(int o){

return o<<1|1;

} void push_up(int o){

tr[o]=tr[ls(o)]+tr[rs(o)];

} void build(int o,int l,int r){

if(l==r){
	tr[o]=a[l];
	return;
}
int mid=l+r>>1;
build(ls(o),l,mid);
build(rs(o),mid+1,r);
push_up(o);

} void xg(int o,int pos,int l,int r,ll k,int op){

if(l==r){
	if(op==1) tr[o]+=k;
	else tr[o]=k;
	return;
}
int mid=l+r>>1;
if(pos<=mid) xg(ls(o),pos,l,mid,k,op);
else xg(rs(o),pos,mid+1,r,k,op);
push_up(o);

} ll cx(int o,int nl,int nr,int l,int r){

if(nl<=l&&r<=nr) return tr[o];
int mid=l+r>>1;
ll ret=0;
if(nl<=mid) ret+=cx(ls(o),nl,nr,l,mid);
if(nr>mid) ret+=cx(rs(o),nl,nr,mid+1,r);
return ret;

} int main(){

int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
	scanf("%d",&a[i]);
}
build(1,1,n);
for(int i=1;i<=m;i++){
	int op;
	scanf("%d",&op);
	if(op==1||op==3){
		int pos;
		ll k;
		scanf("%d %lld",&pos,&k);
		xg(1,pos,1,n,k,op);
	}
	else{
		int l,r;
		scanf("%d %d",&l,&r);
		printf("%lld\n",cx(1,l,r,1,n));
	}
}
return 0;

} <\code>

2020-2021/teams/legal_string/code.1588820958.txt.gz · 最后更改: 2020/05/07 11:09 由 lgwza