大佬们救救我
查看原帖
大佬们救救我
1839929
hrylittle楼主2025/8/30 14:44

内啥本蒟蒻的码风很奇怪大家不要介意。 。 。 。

#include <iostream>
#define ll long long
#define MAXX 60005
#define Code using
#define by namespace
#define hrylittle std
Code by hrylittle;

int c,s,r;

class ST{
    private:
        ll tree[MAXX*4];
        ll lazy[MAXX*4];
        void pushdown(int node,int l,int r){
            if(lazy[node]!=0){
                int mid=(l+r)/2;
                tree[node*2]-=lazy[node]*1LL*(mid-l+1);
                lazy[node*2]+=lazy[node];
                tree[node*2+1]-=lazy[node]*1LL*(r-mid);
                lazy[node*2+1]+=lazy[node];
                lazy[node]=0;
            }
            return;
        }
    public:
        void build(int node,int l,int r){
            if(l==r){
                tree[node]=s;
                lazy[node]=0;
                return;
            }
            int mid=(l+r)/2;
            build(node*2,l,mid);
            build(node*2+1,mid+1,r);
            tree[node]=tree[node*2]+tree[node*2+1];
            return;
        }

        void updaterange(int node,int l,int r,int ql,int qr,int k){
            if(r<ql||l>qr) return;
            if(l>=ql&&r<=qr){
                tree[node]-=k*1LL*(r-l+1);
                lazy[node]+=k;
                return;
            }
            pushdown(node,l,r);
            int mid=(l+r)/2;
            updaterange(node*2,l,mid,ql,qr,k);
            updaterange(node*2+1,mid+1,r,ql,qr,k);
            tree[node]=tree[node*2]+tree[node*2+1];
            return;
        }

        char query(int node,int l,int r,int ql,int qr){
            if(r<ql||l>qr) return 'T';
            if(l>=ql&&r<=qr) return tree[node]<0?'N':'T';
            pushdown(node,l,r);
            int mid=(l+r)/2;
            char left=query(node*2,l,mid,ql,qr);
            char right=query(node*2+1,mid+1,r,ql,qr);
            if(left=='N'||right=='N') return 'N';
            return 'T';
        }
}seg;

int main(){
    cin>>c>>s>>r;
    seg.build(1,1,c);
    for(int i=1;i<=r;i++){
        int o,d,r;
        cin>>o>>d>>r;
        seg.updaterange(1,1,c,o,d,r);
        cout<<seg.query(1,1,c,o,d)<<endl;
    }
    return 0;
}

由于我还要补作业,只能在线等半小时sorry

2025/8/30 14:44
加载中...