传送门

矩阵求逆,在线的异或是上一次答案,不是异或和。

#include<bits/stdc++.h>
#define cs const
#define re register
cs int N=1e6+10,mod=998244353;
int a[N],ans,n,m,type,op,l,r;
inline int gi(){int x=0;char ch=getchar();while(!isdigit(ch)) ch=getchar();while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();return x;
}
inline int decode(){return type?gi()^ans:gi();}
inline int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}
inline int dec(int x,int y){return x-y<0?x-y+mod:x-y;}
inline int mul(int x,int y){return 1ll*x*y%mod;}
inline void print(int x){if(x>9) print(x/10);putchar(x%10+'0');}
struct matrix{int a[2][2];matrix(){memset(a,0,sizeof(a));}inline void init(int x){a[0][0]=x,a[0][1]=a[1][0]=1,a[1][1]=0;}inline void I_init(int x){a[0][0]=0,a[0][1]=a[1][0]=1,a[1][1]=mod-x;}
}I[N],f[N],now;
inline matrix operator*(cs matrix &a,cs matrix &b){matrix c;for(int i=0;i<2;++i)for(int k=0;k<2;++k)for(int j=0;j<2;++j)c.a[i][j]=add(c.a[i][j],mul(a.a[i][k],b.a[k][j]));return c;
}
signed main(){n=gi(),m=gi(),type=gi(),f[0].a[0][0]=f[0].a[1][1]=1,I[0].a[0][0]=I[0].a[1][1]=1;for(int i=1;i<=n;++i) a[i]=gi(),f[i].init(a[i]),I[i].I_init(a[i]),f[i]=f[i-1]*f[i],I[i]=I[i]*I[i-1];while(m--){op=gi();if(op==1) a[++n]=decode(),f[n].init(a[n]),I[n].I_init(a[n]),f[n]=f[n-1]*f[n],I[n]=I[n]*I[n-1];if(op==2){l=decode(),r=decode(),now=I[l-1]*f[r];int p=now.a[0][0],q=now.a[1][0];ans=(p^q),print(p),putchar(' '),print(q),putchar('\n');}}
}

loj 573 单枪匹马相关推荐

  1. 【LOJ#573】【LNR#2】单枪匹马(线段树)

    [LOJ#573][LNR#2]单枪匹马(线段树) 题面 LOJ 题解 考虑拿线段树维护这个值,现在的问题就是左右怎么合并,那么就假设最右侧进来的那个分数是\(\frac{x}{y}\)的形式,那么就 ...

  2. LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树

    $f$ 函数暴力计算的话是 $O(n)$ 的(用一个 $\frac{x}{y}$ 来保存每一步计算结果,然后依次合并) 我们将一段区间的结果写成 $\frac{ax+by}{cx+dy}$ 的形式,初 ...

  3. 【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】

    传送门 支持后面加数,区间进行奇怪的要求操作算值. 你看这个操作是个线性的迭代,这种时候就应该想到线性代数,那就想到矩阵. 你就强行用矩阵表示,然后手玩一下结果矩阵来反推原来的矩阵. 手玩出来每个数的 ...

  4. LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理

    题目:https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] %= p[ i ] ,因为在 multiset 里找的时候还需要真实值. 2.注意用 m ...

  5. 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)

    题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...

  6. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  7. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  8. 职校电子计算机专业高考分数线,2015年重庆高考分数线公布:一本文572理573

    一.普通文.理类 1. 文史类 本科第一批                                  572分 本科第二批                                  5 ...

  9. Loj #6287 诗歌

    link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列.... 但这太大材小用了(而且很可能被 ...

最新文章

  1. INSTALL_FAILED_USER_RESTRICTED
  2. JavaScript 对象属性作实参以及实参对象的callee属性
  3. nn.CrossEntropyLoss()
  4. 从OpenStack Newton发布看开源云计算
  5. 交互神器 Facebook Origami
  6. 成功解决pandas.core.indexing.IndexingError: Too many indexers
  7. 数据结构之链表创建一元多项式,求一元多项式之和
  8. Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
  9. Z-Stack Home Developer's Guide—6. Clusters, Commands and Attributes中文翻译【Z-Stack Home 1.2.0的开发文档】
  10. postman使用教程,接口自动化测试
  11. oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
  12. Pod install 慢, pod update 慢, Cocoapods setup下载缓慢,手动解决方案
  13. ITIL4定义的四大价值维度
  14. 合适新手入门的串口屏学习分享
  15. Html5 postmessage 子父窗口传值
  16. oeasy教您玩转vim - 28 - 水平移动
  17. 从单目视觉信息学习深度信息(一)
  18. CollapsingToolbarLayout用法详解(简洁易懂)
  19. 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
  20. 学习OpenCV3:创建一张空白的图片并画线

热门文章

  1. GMAN:一种用于交通预测的图多注意网络
  2. matlab看图像分度值,也制作开源 STC15W408AS 白光T12控制器 数码管版本 洞洞板搭建...
  3. hbase查看表结构_HBase简介和基本命令
  4. android实现弹幕功能,Android实现自定义的弹幕效果
  5. 【力扣题解】面试题 10.11. 峰与谷
  6. 如何在windows中添加smb共享
  7. Python机器学习及实践——基础篇9(SVM回归)
  8. 为什么论文中有的空格特别大
  9. 阿里巴巴首届设计大赛,王牌大奖最终花落谁家?
  10. muscle多序列比对简单应用