问题标题: 送豆

0
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
汪恺恒
汪恺恒
中级启示者
中级启示者

ding

有人想看题解吗

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
我要回答