0
汪恺恒
中级启示者
中级启示者
由于本人已经退役,所以本人决定送豆
A了这道题,你最多可获得2000豆(最多3个名额)
禁止作弊和抄袭他人代码
本帖禁水
截止日期:2024.09.01
(如果你AC了这道题,请洛谷私信我)
如果你在截止日期之后看到此帖,你也可以去做这道题,如果你AC了,也可以私信我(但不排除我在截止日期之后没时间看洛谷)
如果你有什么问题,可以在本帖中问
汪恺恒在2024-08-25 11:40:11追加了内容
给个提示:std用的不是线段树(可能是我太菜了,但线段树大概率做不了)
汪恺恒在2024-09-01 12:14:17追加了内容
ding
(没人会吗)
汪恺恒在2024-09-06 11:27:59追加了内容
可以看一下题目标签
1
0
0
0
0
0
0
0
0
万梓乐
修练者
修练者
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
0
0
0
0
0
0
0
0
0
0
张百川
新手光能
新手光能
哦,天哪!!好强的数据!!
线段树的确无能为力
错误代码:
#include<bits/stdc++.h>
using namespace std;
long long tree[1000000005];
int a[100005],l,r,x;
int n,m;
void bu(int x,int l,int r){
if(l==r)tree[x]=a[l];
else{
int mid=(l+r)/2;
bu(2*x,l,mid);
bu(2*x+1,mid+1,r);
tree[x]=tree[2*x]+tree[2*x+1];
}
}
long long q(int f,int st,int ed){
if(st>r||ed<l)return 0;
if(st>=l&&ed<=r){
long long cnt=0;
for(int i=st;i<=ed;i++){
cnt+=abs(a[i]-x);
}
return cnt;
}
int mid=(st+ed)/2;
return q(2*f,st,mid)+q(2*f+1,mid+1,ed);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
bu(1,1,n);
while(m--){
cin>>l>>r>>x;
cout<<q(0,0,n)<<endl;
}
return 0;
}
0
0
0