• 个人简介

    线段树板子:

    #include<bits/stdc++.h>
    #include<ext/pb_ds/assoc_container.hpp>
    #include<ext/pb_ds/tree_policy.hpp>
    #define int long long
    using namespace std;
    using namespace __gnu_pbds;
    int n,m;
    int tr[400005];
    int a[100005];
    int tag[400005];
    inline void build(int id,int l,int r)
    {
    	if(l==r)
    	{
    		tr[id]=a[l];
    		return;
    	}
    	else
    	{
    		int m=(l+r)>>1;
    		build(id<<1,l,m);
    		build(id<<1|1,m+1,r);
    		tr[id]=tr[id<<1]+tr[id<<1|1];
    	}
    }
    inline void update(int id,int l,int r,int x,int y,int d)
    {
    	if(l==x&&r==y)
    	{
    		tag[id]+=d;
    		return;
    	}
    	tr[id]+=(y-x+1)*d;
    	int m=(l+r)>>1;
    	if(y<=m)
    	{
    		update(id<<1,l,m,x,y,d);
    	}
    	else if(x>m)
    	{
    		update(id<<1|1,m+1,r,x,y,d);
    	}
    	else
    	{
    		update(id<<1,l,m,x,m,d);
    		update(id<<1|1,m+1,r,m+1,y,d);
    	}
    	
    }
    inline int sum(int id,int l,int r,int x,int y,int p)
    {
    	p+=tag[id];
    	if(l==x&&r==y)return p*(r-l+1)+tr[id];
    	int m=(l+r)>>1;
    	if(y<=m)
    	{
    		return sum(id<<1,l,m,x,y,p);
    	}
    	else if(x>m)
    	{
    		return sum(id<<1|1,m+1,r,x,y,p);
    	}
    	else
    	{
    		return (sum(id<<1,l,m,x,m,p)+sum(id<<1|1,m+1,r,m+1,y,p));
    	}
    }
    signed main()
    {
    	//freopen(".in","r",stdin);
    	//freopen(".out","w",stdout);
    	//cerr<<;
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)
    		cin>>a[i];
    	build(1,1,n);
    	for(int i=1;i<=m;i++)
    	{
    		int op,x,y;
    		cin>>op>>x>>y;
    		if(op==1)
    		{
    			int d;
    			cin>>d;
    			update(1,1,n,x,y,d);
    		}
    		else
    		{
    			cout<<sum(1,1,n,x,y,0)<<endl;
    		}
    	}
    	//fclose(stdin);
    	//fclose(stdout);
    	return 0;
    }
    
    
  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

    This person is lazy and didn't write any solutions.
  • Stat

  • Rating

题目标签

数学
2
字符串
2
模拟
2
高精度
2
系统测试
1
图论
1
最小生成树
1
顺序结构
1
O2优化
1
USACO
1
素数判断
1
质数
1
筛法
1
数论
1
枚举
1
暴力
1
二分答案
1