zoukankan      html  css  js  c++  java
  • [TJOI2018] 数学计算

    题目

    原题地址

    解说

    每次操作看成一个点,用线段树维护区间的积,没什么可说的。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int Q=1e5+5;
    inline ll read(){
        ll X=0,w=0;char ch=0;
        while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
        while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
        return w?-X:X;
    }
    int q;
    ll p,tr[Q*4];
    inline void upt(int a){tr[a]=tr[a<<1]*tr[a<<1|1]%p;}
    void build(int a,int l,int r){
        if(l==r){
        tr[a]=1;return;
        }
        int mid=(l+r)>>1;
        build(a<<1,l,mid);build(a<<1|1,mid+1,r);
        upt(a);
    }
    void mdy(int a,int l,int r,int x,ll y){
        if(l==r){
        tr[a]=y;
        return;
        }
        int mid=(l+r)>>1;
        if(x<=mid)mdy(a<<1,l,mid,x,y);
        else mdy(a<<1|1,mid+1,r,x,y);
        upt(a);
    }
    int main(){
        int T=read();
        while(T--){
              q=read(),p=read();
              build(1,1,q);
              for(int i=1;i<=q;i++){
                  int op=read();
                  if(op==1){
                      ll m=read();
                      mdy(1,1,q,i,m);
                  }
                  else{
                      int pos=read();
                      mdy(1,1,q,pos,1);
                  }
                  printf("%lld
    ",tr[1]);
              }
        }
        return 0;
    }
    

    幸甚至哉,歌以咏志。

  • 相关阅读:
    C
    数论::整除分块
    洛谷P1262 间谍网络
    洛谷P1649 【[USACO07OCT]障碍路线Obstacle Course】
    HDU2066dijkstra模板题
    Captain Flint and Treasure
    CodeForces
    CodeForces
    HDU-1827
    HDU 1811
  • 原文地址:https://www.cnblogs.com/DarthVictor/p/12976031.html
Copyright © 2011-2022 走看看