3.4

试试平板,但是笔有点拉了,,写的好丑
复习的内容比较简单的就随便放在这里了

1

然后练手LUOGUP2068,单点修改区间查询没有初始值,其实就是挺裸的树状数组,但是先复习线段树

#include<bits/stdc++.h>

using namespace std;
#define mid ((l+r)>>1)
#define int long long
const int N=4e5+7;

int n,w;
int a[N];
int mark[N];

void add(int x,int l,int r,int k)
{
	a[x]+=(r-l+1)*k;
	mark[x]+=k;
	return ;
}

void push(int x,int l,int r)
{
	add(x<<1,l,mid,mark[x]);
	add(x<<1|1,mid+1,r,mark[x]);
	mark[x]=0;
	return ;
}
void pl(int x,int l,int r,int s,int e,int k)
{
	if(r<s||l>e)
	return ;
	if(s<=l&&e>=r)
	{
		add(x,l,r,k);
		return ;
	}
	push(x,l,r);
	pl((x<<1),l,mid,s,e,k);
	pl((x<<1|1),mid+1,r,s,e,k);
	a[x]=a[x<<1]+a[x<<1|1];
	return ;
}
int query(int x,int l,int r,int s,int e )
{
	if(l>e||r<s)
	return 0;
	if(l>=s&&r<=e)
	return a[x];
	push(x,l,r);
	
	return query((x<<1),l,mid,s,e)+query((x<<1|1),mid+1,r,s,e);
}
signed main()
{
	ios::sync_with_stdio(false);
	cin>>n>>w;
	
	while(w--)
	{
		char c;
		int q,e;
		cin>>c>>q>>e;
		if(c=='x')
		{
			pl(1,1,n,q,q,e);
		}
		else
		{
			cout<<query(1,1,n,q,e)<<endl;
			
		}
	}
	
	return 0;
}

今天还找到一个有意思的暴力小题
P4924 [1007] 魔法少女小Scarlet

posted @ 2025-03-04 19:32  Hehe_o  阅读(21)  评论(0)    收藏  举报