loj 573 单枪匹马
传送门
矩阵求逆,在线的异或是上一次答案,不是异或和。
#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 单枪匹马相关推荐
- 【LOJ#573】【LNR#2】单枪匹马(线段树)
[LOJ#573][LNR#2]单枪匹马(线段树) 题面 LOJ 题解 考虑拿线段树维护这个值,现在的问题就是左右怎么合并,那么就假设最右侧进来的那个分数是\(\frac{x}{y}\)的形式,那么就 ...
- LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树
$f$ 函数暴力计算的话是 $O(n)$ 的(用一个 $\frac{x}{y}$ 来保存每一步计算结果,然后依次合并) 我们将一段区间的结果写成 $\frac{ax+by}{cx+dy}$ 的形式,初 ...
- 【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】
传送门 支持后面加数,区间进行奇怪的要求操作算值. 你看这个操作是个线性的迭代,这种时候就应该想到线性代数,那就想到矩阵. 你就强行用矩阵表示,然后手玩一下结果矩阵来反推原来的矩阵. 手玩出来每个数的 ...
- LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
题目:https://loj.ac/problem/2721 1.注意别一输入 p[ i ] 就 a[ i ] %= p[ i ] ,因为在 multiset 里找的时候还需要真实值. 2.注意用 m ...
- 洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([ ...
- Loj #3111. 「SDOI2019」染色
Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...
- Loj #3055. 「HNOI2019」JOJO
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...
- 职校电子计算机专业高考分数线,2015年重庆高考分数线公布:一本文572理573
一.普通文.理类 1. 文史类 本科第一批 572分 本科第二批 5 ...
- Loj #6287 诗歌
link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列.... 但这太大材小用了(而且很可能被 ...
最新文章
- INSTALL_FAILED_USER_RESTRICTED
- JavaScript 对象属性作实参以及实参对象的callee属性
- nn.CrossEntropyLoss()
- 从OpenStack Newton发布看开源云计算
- 交互神器 Facebook Origami
- 成功解决pandas.core.indexing.IndexingError: Too many indexers
- 数据结构之链表创建一元多项式,求一元多项式之和
- Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
- Z-Stack Home Developer's Guide—6. Clusters, Commands and Attributes中文翻译【Z-Stack Home 1.2.0的开发文档】
- postman使用教程,接口自动化测试
- oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
- Pod install 慢, pod update 慢, Cocoapods setup下载缓慢,手动解决方案
- ITIL4定义的四大价值维度
- 合适新手入门的串口屏学习分享
- Html5 postmessage 子父窗口传值
- oeasy教您玩转vim - 28 - 水平移动
- 从单目视觉信息学习深度信息(一)
- CollapsingToolbarLayout用法详解(简洁易懂)
- 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
- 学习OpenCV3:创建一张空白的图片并画线
热门文章
- GMAN:一种用于交通预测的图多注意网络
- matlab看图像分度值,也制作开源 STC15W408AS 白光T12控制器 数码管版本 洞洞板搭建...
- hbase查看表结构_HBase简介和基本命令
- android实现弹幕功能,Android实现自定义的弹幕效果
- 【力扣题解】面试题 10.11. 峰与谷
- 如何在windows中添加smb共享
- Python机器学习及实践——基础篇9(SVM回归)
- 为什么论文中有的空格特别大
- 阿里巴巴首届设计大赛,王牌大奖最终花落谁家?
- muscle多序列比对简单应用