求调 subtask1全WA subtask2全RE 其他全TLE
查看原帖
求调 subtask1全WA subtask2全RE 其他全TLE
988880
Icerainzsj楼主2025/7/28 19:10
#include<iostream>
#define int long long
using namespace std;
const int MOD=(int)1e4;
int n,m,q;
struct fc{
    int op,id=0,v=0;
}option[(int)2e5+5];
int sum[(int)2e5+5];
int add[(int)2e5+5];
int ans[(int)2e5+5];
int cnt=0;
int mpow(int base,int power){
    int result = 1;   
    while (power > 0){
        if (power & 1)result *= base;  
        result%=MOD;
        base *= base;                                 
        power >>= 1;
    }                                      
    return result;   
}
void solve(){
    for(int i=1;i<=cnt;i++){
        ans[option[add[i]].id]=(ans[option[add[i]].id]+(option[add[i]].v*mpow(2,(sum[cnt]-sum[i-1])))%MOD)%MOD;
        //cout<<mpow(2,sum[cnt]-sum[i-1])<<" ";
    }
    //cout<<endl;
    return;
}
signed main(){
    cin>>n>>m>>q;
    for(int i=1;i<=m;i++){
        cin>>option[i].op;
        if(option[i].op==1){
            cin>>option[i].id>>option[i].v;
            option[i].v%=MOD;
        }
    }
    // for(int i=1;i<=m;i++){
    //     cout<<option[i].op<<" "<<option[i].id<<" "<<option[i].v<<"\n";
    // }
    int tot=0;
    for(int i=1;i<=q;i++){
        int l,r;
        cin>>l>>r;
        for(int j=l;j<=r;j++){
            cout<<j<<" ";
            if(option[j].op==1){
                sum[cnt]=tot;   
                add[++cnt]=j;
                //tot=0;
            }
            else{
                tot++;
            }
        }
        cout<<endl;
    }
    sum[cnt]=tot;
    // for(int i=1;i<=cnt;i++){
    //     cout<<option[add[i]].id<<" "<<option[add[i]].v<<" "<<sum[cnt]-sum[i-1]<<"\n";
    // }
    // return 0;
    //return 0;
    solve();
    for(int i=1;i<=n;i++){
        cout<<ans[i]<<" ";
    }
    return 0;
}

求调

2025/7/28 19:10
加载中...