区间开方(花神游历各国)线段树WA求助

SP2713 GSS4 - Can you answer these queries IV

```cpp #include <bits/stdc++.h> using namespace std; #define endl '\n' typedef long long ll; int T=0; namespace SegmentTree { #define maxn 100005 int n; ll num[maxn]; struct LaCampanella { int l,r; ll sum; bool fix; // 该区间是(1)否(0)不用再修改 } a[maxn<<2]; #define ls(k) (k<<1) #define rs(k) (k<<1|1) inline void update(const int &k) { if(a[k].l==a[k].r) return; a[k].sum=a[ls(k)].sum+a[rs(k)].sum; a[k].fix=a[ls(k)].fix&&a[rs(k)].fix; } inline void build(int k,int l,int r) { a[k].l=l,a[k].r=r; if(l==r) { a[k].sum=num[l]; a[k].fix=0; return; } int mid=(l+r)>>1; build(ls(k),l,mid); build(rs(k),mid+1,r); update(k); } inline ll query(int k,int l,int r) { if(a[k].l==l&&a[k].r==r) return a[k].sum; int mid=(a[k].l+a[k].r)>>1; if(r<=mid) return query(ls(k),l,r); else if(l>mid) return query(rs(k),l,r); else return query(ls(k),l,mid)+query(rs(k),mid+1,r); } inline void modify(int k,int l,int r) { if(a[k].l==a[k].r) { a[k].sum=(ll)sqrtl(a[k].sum); if(a[k].sum<=1) a[k].fix=1; return; } int mid=(a[k].l+a[k].r)>>1; if(r<=mid) { if(!a[ls(k)].fix) modify(ls(k),l,r); } else if(l>mid) { if(!a[rs(k)].fix) modify(rs(k),l,r); } else { if(!a[ls(k)].fix) modify(ls(k),l,mid); if(!a[rs(k)].fix) modify(rs(k),mid+1,r); } update(k); } } using namespace SegmentTree; int q,x,l,r; signed main() { ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); while(cin >> n) { cout << "Case #" << (++T) << endl; for(int i=1;i<=n;++i) cin >> num[i]; build(1,1,n); cin >> q; while(q--) { cin >> x >> l >> r; if(l>r) l^=r^=l^=r; if(x==1) cout << query(1,l,r) << endl; else if(x==0) modify(1,l,r); } cout << endl; } return 0; } ```
by SlaineTroyard @ 2023-03-19 19:39:51


~~线段树这种程度的清空应该可以吧~~
by SlaineTroyard @ 2023-03-19 19:41:10


```cpp cout << "Case #" << (++T) << endl; ``` -> ```cpp cout << "Case #" << (++T) << ":" << endl; ```
by zjy0004 @ 2023-03-19 19:43:40


@[Franz_Liszt](/user/450246) 大多数古老OJ的输出格式都比较奇怪,还是要多注意
by zjy0004 @ 2023-03-19 19:45:16


@[OIdrearmer_Z](/user/479493) 我超,wssb 过了 thx
by SlaineTroyard @ 2023-03-19 19:45:17


|