• uoj46玄学


    复杂度辣鸡没人权

    疯狂爆oj

    感觉要被众多uoj用户骂了

      1 #include <bits/stdc++.h>
      2 #define ll long long
      3 #define LS ls[now]?ls[now]:(tr[++NODE]=stru(),ls[now]=NODE)
      4 #define RS rs[now]?rs[now]:(tr[++NODE]=stru(),rs[now]=NODE)
      5 #define mid (l+r>>1)
      6 using namespace std;
      7 int MOD,NODE,KEY,n,m,opt,l,r,x,y;
      8 int root[800001];
      9 int ls[20000001],rs[20000001],st[800001],L[800001],R[800001],X[800001],Y[800001];
     10 struct stru
     11 {
     12     long long k,b;
     13     stru()
     14     {
     15         k=1;b=0;
     16     }
     17     stru(int K,int B)
     18     {
     19         k=K;b=B;
     20     }
     21  } tr[20000001],alb[800001];
     22 stru merge(stru x,stru y)
     23 {
     24     return stru(x.k*y.k%MOD,(x.b*y.k+y.b)%MOD);
     25 }
     26 bool is(stru p)
     27 {
     28     return(p.k!=1 || p.b!=0);
     29 }
     30 void add(int now,int l,int r,int x,int y,int p,int q)
     31 {
     32     if(l==x && r==y)
     33     {
     34         tr[now]=merge(tr[now],stru(p,q));
     35         return;
     36     }
     37     if(is(tr[now]))
     38     {
     39         tr[LS]=merge(tr[LS],tr[now]);
     40         tr[RS]=merge(tr[RS],tr[now]);
     41         tr[now]=stru();
     42     }
     43     if(x<=mid) add(LS,l,mid,x,min(mid,y),p,q);
     44     if(y>mid) add(RS,mid+1,r,max(mid+1,x),y,p,q);
     45 }
     46 int read()
     47 {
     48     int x=0;char c=getchar();
     49     while (c<'0'||c>'9')c=getchar();
     50     while (c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
     51     return x;
     52 }
     53 int main()
     54 {
     55     KEY=read();
     56     n=read();MOD=read();
     57     for(int i=1;i<=n;i++)
     58         st[i]=read();
     59     m=read();
     60     int N=5000;
     61     int lastans=0;
     62     for(int i=1,j=0,J=0;i<=m;i++)
     63     {
     64         opt=read();l=read();r=read();x=read();
     65         if(KEY&1)
     66             l^=lastans,r^=lastans;
     67         if(opt==1)
     68         {
     69             y=read();
     70             L[++j]=l;R[j]=r;X[j]=x;Y[j]=y;
     71             if(j%N==1)
     72                 root[++J]=++NODE;
     73             add(root[J],1,n,l,r,x,y);
     74         }
     75         if(opt==2)
     76         {
     77             if(KEY&1)
     78                 x^=lastans;
     79             int k,K;ll ret=st[x];
     80             for(k=l;k%N!=1 && k<=r;k++)
     81             if(L[k]<=x && x<=R[k])
     82                 ret=(ret*X[k]+Y[k])%MOD;
     83             if(k<=r)
     84             {
     85                 for(K=k/N+1;K*N<=r;K++)
     86                 { 
     87                     int now=root[K],l=1,r=n,top=0;
     88                     while(l<r)
     89                     {
     90                         if(is(tr[now])) 
     91                             alb[++top]=tr[now];
     92                         if(x<=mid)
     93                             now=LS,r=mid;
     94                         else
     95                             now=RS,l=mid+1;
     96                     } 
     97                     stru tem=tr[now];
     98                     for(int i=top;i;i--)
     99                         tem=merge(tem,alb[i]);
    100                 //    tem=que(root[])
    101                     ret=(tem.k*ret+tem.b)%MOD;
    102                 } 
    103                 for(k=(K-1)*N+1;k<=r;k++)
    104                 if(L[k]<=x && x<=R[k])
    105                     ret=(ret*X[k]+Y[k])%MOD;    
    106             }
    107             printf("%d
    ",ret);
    108         //    puts("OK");
    109             lastans=ret;
    110          } 
    111     }
    112     return 0;
    113 }
  • 相关阅读:
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    11
    实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题
    tx2系统备份与恢复
    如何在Ubuntu 18.04上安装和卸载TeamViewer
    bzoj 3732 Network (kruskal重构树)
    bzoj2152 聪聪可可 (树形dp)
    牛客 216D 消消乐 (二分图最小点覆盖)
    牛客 197E 01串
    Wannafly挑战赛23
  • 原文地址:https://www.cnblogs.com/wanglichao/p/7148791.html
Copyright © 2020-2023  润新知