社区讨论

点都下下来了测试正确为什么0分

P2068统计和参与者 8已保存回复 16

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
16 条
当前快照
1 份
快照标识符
@mi7xq2ib
此快照首次捕获于
2025/11/21 05:19
4 个月前
此快照最后确认于
2025/11/21 06:39
4 个月前
查看原帖
代码
CPP
#include<cstdio>
#define ll long long
using namespace std;
ll n,m,q,x,y,tree[500001];
char mod; 
inline int read()
{
	char c=getchar();
	int x=0,f=1;
	while(c<'0'||c>'9')
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}
ll lowbit(ll num){return num&-num;}
void build(ll s, ll num)
{
	for(ll i=s;i<=n;i+=lowbit(i)) tree[i]+=num;
}
ll ask(ll s)
{
	ll ans=0;
	for(ll i=s;i>=1;i-=lowbit(i)) ans+=tree[i];
	return ans;
}
int main()
{
	n=read(),m=read();
	for(ll i=1;i<=m;i++)
	{
		scanf("%c",&mod);
		x=read(),y=read();
		if(mod=='x') build(x,y);
		else printf("%lld\n",ask(y)-ask(x-1));
	}
	return 0;
}
第一个点
CPP
5
4
x 3 8
x 4 9
y 1 3
y 3 4

答案
CPP
8
17

回复

16 条回复,欢迎继续交流。

正在加载回复...