萌新刚学OI-1e18s小清新码风求调

P4145 上帝造题的七分钟 2 / 花神游历各国

@[Humour_Fz](/user/1056908) 帮你改了一下 ```cpp #include<bits/stdc++.h> using namespace std; #define ll long long #define pl (p<<1) #define pr (p<<1|1) const int N=1e5+100; struct Tree{ll sum,mx;}tr[N<<2]; int n,q,op,l,r;ll a[N]; void push_up(int p){tr[p].sum=tr[pl].sum+tr[pr].sum,tr[p].mx=max(tr[pl].mx,tr[pr].mx);} void update(int l,int r,int le,int ri,int p){ if(tr[p].mx==1)return; if(l==r)return tr[p].sum=tr[p].mx=sqrt(tr[p].sum),void(); int mid=l+r>>1; if(le<=mid)update(l,mid,le,ri,pl); if(ri>mid)update(mid+1,r,le,ri,pr); push_up(p); }ll query(int l,int r,int le,int ri,int p){ if(le<=l&&r<=ri)return tr[p].sum; int mid=l+r>>1;ll ret=0; if(le<=mid)ret+=query(l,mid,le,ri,pl); if(ri>mid)ret+=query(mid+1,r,le,ri,pr); return ret; }void build(int l,int r,int p){ if(l==r)return tr[p].sum=tr[p].mx=a[l],void(); int mid=l+r>>1;build(l,mid,pl),build(mid+1,r,pr),push_up(p); }int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; build(1,n,1),cin>>q; while(q--){ cin>>op>>l>>r;if(l>r)swap(l,r); if(!op)update(1,n,l,r,1); else cout<<query(1,n,l,r,1)<<'\n'; }return 0; } ```
by IceKylin @ 2024-02-21 13:25:19


@[IceKylin](/user/719767) thx,此贴结
by Humour_Fz @ 2024-02-21 13:27:33


@[Humour_Fz](/user/1056908) 可以关注一下吗,谢谢
by IceKylin @ 2024-02-21 13:29:51


@[IceKylin](/user/719767) 已关
by Humour_Fz @ 2024-02-21 13:31:07


|