美文网首页
Multiply game (HDU3074)

Multiply game (HDU3074)

作者: miaozasnone | 来源:发表于2019-08-05 23:04 被阅读0次

    Multiply game HDU3074

    #include<iostream>
    #include<cstring>
    #define maxn 50005
    #define mod 1000000007
    #define ll long long
    #define qc std::ios::sync_with_stdio(false),std::cin.tie(0)
    using namespace std;
    struct Tree{
        int l,r,mid;
        ll msum;
    };
    Tree t[maxn<<2];
    ll V[maxn];
    void pushup(int k){
        t[k].msum=((t[k<<1].msum)%mod*(t[k<<1|1].msum)%mod)%mod;
    }
    void build(int k,int l,int r){
        t[k].l=l,t[k].r=r,t[k].mid=(l+r)>>1;
        if(t[k].l==t[k].r){
            t[k].msum=V[r]%mod;
            return;
        }
        build(k<<1,t[k].l,t[k].mid);
        build(k<<1|1,t[k].mid+1,t[k].r);
        pushup(k);
    }
    ll query(int k,int l,int r){
        // if(t[k].r<l||t[k].l>r){
        //     return 1;
        // }
        if(t[k].l>=l&&t[k].r<=r){
            return t[k].msum;
        }
        ll ans=1;
        if(l<=t[k].mid)ans*=query(k<<1,l,r)%mod;
        if(r>t[k].mid)ans*=query(k<<1|1,l,r)%mod;
        return ans%mod;
    }
    void update(int k,int index,int value){
        if(t[k].r<index||t[k].l>index){
            return ;
        }
        if(t[k].l==t[k].r){
            t[k].msum=value%mod;
            return;
        }
        if(index<=t[k].mid)update(k<<1,index,value);
        else update(k<<1|1,index,value);
        pushup(k);
    }
    int n,q,T;
    int a,b,c;
    int main(){
        //qc;
        scanf("%d",&T);
        while (T--)
        {
            memset(t,0,sizeof(t));
            memset(V,0,sizeof(V));
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%lld",&V[i]);
            build(1,1,n);
            scanf("%d",&q);
            for(int i=1;i<=q;i++){
                scanf("%d%d%d",&a,&b,&c);
                if(a){
                    update(1,b,c);
                }
                else
                {
                    printf("%lld\n",query(1,b,c)%mod);
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Multiply game (HDU3074)

          本文链接:https://www.haomeiwen.com/subject/dofbdctx.html