社区讨论

全WA求调

P4588[TJOI2018] 数学计算参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mhjtd31p
此快照首次捕获于
2025/11/04 08:11
4 个月前
此快照最后确认于
2025/11/04 08:11
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int maxn=1e5+1;
const int maxm=1e9+1;

// queue<int> q;

long long T,Q,M;

struct SGT{
    long long a[4*maxn];
    long long mid(int l,int r){
        return (l+r)/2;
    }
    long long ls(int p){
        return (p*2);
    }
    long long rs(int p){
        return (p*2+1);
    }
    
    void pushup(int p){
        a[p]=(a[ls(p)]*a[rs(p)])%M;
    }

    void update(int pos,int x,int l,int r,int p){
        if(l==r){
            if(x==1) a[p]=1;
            else{
                int t=x%M;
                a[p]*=t;
                a[p]%=M;
            }
            return;
        }
        long long m=mid(l,r);
        if(pos<=m) update(pos,x,l,m,ls(p));
        if(pos>=m+1) update(pos,x,m+1,r,rs(p));
        pushup(p);
    }

    long long query(){
        return a[1];
    }

}sgt;

void init(){
    cin>>T>>Q>>M;
    for(int i=1;i<=4*maxn;i++){
        sgt.a[i]=1;
    }
}

signed main(){
    init();
    long long op;
    long long num;
    long long cnt1=0;
    long long cntotal=0;
    long long hash[maxn];
    for(int i=1;i<=Q;i++){
        cin>>op;
        cntotal++;
        if(op==1){
            cnt1++;
            hash[cntotal]=cnt1;
            cin>>num;
            sgt.update(cnt1,num,1,Q,1);
            cout<<sgt.query()<<endl;
        }
        else{
            cin>>num;
            sgt.update(hash[num],1,1,Q,1);
            cout<<sgt.query()<<endl;
        }
    }

    return 0;
}
开了longlong也wa

回复

3 条回复,欢迎继续交流。

正在加载回复...