\[\begin{eqnarray*}
x_i&=&x_{i-1}+x_{i-2}\\
x_i^2&=&x_{i-2}^2+x_{i-1}^2+2x_{i-2}x_{i-1}\\
x_{i-1}x_i&=&x_{i-1}^2+x_{i-2}x_{i-1}
\end{eqnarray*}\]

故可以构造转移矩阵$A$进行递推。

不妨设$n\geq m$,则可以预处理出$A^0,A^1,...,A^n$以及$A^n,A^{2n},...,A^{nn}$。

那么查询某个数的复杂度为$4^2$。

总时间复杂度为$O(4^3n)$。

#include<cstdio>
#include<algorithm>
#include<tr1/unordered_map>
#define rep(i) for(int i=0;i<4;i++)
using namespace std;
using namespace std::tr1;
typedef long long ll;
const int N=4,M=100005;
int n,m,lim,q,P,C1,C2,i,j,x,y,d,r,o;
int B[N],A[M][N][N],pA[M][N][N];
unordered_map<ll,int>T;
inline void read(ll&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline void mul(int a[][N],int b[][N],int c[][N]){rep(k)rep(j)if(b[k][j])rep(i)if(a[i][k])c[i][j]=(1LL*a[i][k]*b[k][j]+c[i][j])%P;
}
inline int get(ll t){int x=0,*a=pA[t/lim][3],(*b)[N]=A[t%lim];rep(i){int y=0;rep(j)y=(1LL*a[j]*b[j][i]+y)%P;x=(1LL*y*B[i]+x)%P;}return x;
}
inline int ask(int x,int y){if(x>n||y>m)return P;ll t=1LL*(x-1)*m+y;if(T.find(t)!=T.end())return T[t];return get(t);
}
void write(int x){if(x>=10)write(x/10);putchar(x%10+'0');
}
int main(){rep(i)A[0][i][i]=pA[0][i][i]=1;A[1][0][1]=1;A[1][1][0]=A[1][1][1]=1,A[1][1][2]=2;A[1][2][1]=A[1][2][2]=1;A[1][3][1]=A[1][3][3]=1;scanf("%d%d%d%d%d%d",&n,&m,&q,&P,&C1,&C2);B[0]=B[3]=1LL*C1*C1%P;B[1]=1LL*C2*C2%P;B[2]=1LL*C1*C2%P;lim=n>m?n:m;for(i=2;i<=lim;i++)mul(A[i-1],A[1],A[i]);for(i=1;i<=lim;i++)mul(pA[i-1],A[lim],pA[i]);for(i=1;i<=q;i++){ll x,y;read(x),read(y);if(T.find(x)==T.end())T[x]=get(x);if(T.find(y)==T.end())T[y]=get(y);swap(T[x],T[y]);}for(i=x=y=1,o=ask(1,1);i<n+m-1;i++){write(o),putchar(' ');d=ask(x+1,y),r=ask(x,y+1);if(d<=r)x++,o=d;else y++,o=r;}return write(o),0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/5352447.html

BZOJ4471 : 随机数生成器Ⅱ相关推荐

  1. luogu P3306 [SDOI2013] 随机数生成器(BSGS,数列求通项,毒瘤特判)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 发个水题的 题解证明我还在() luogu P3306 [SDOI2013] 随机数生成器 Webli ...

  2. Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

    Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random, ThreadLocalRandom 即 ...

  3. 开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

    原文:[原创]开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器                本博客所有文章分类的总目录:http://www.cnblogs.com/asxiny ...

  4. P5147 随机数生成器 [数列]

    P5147 随机数生成器 数学老师看不懂系列 看题目这一片代码就很晕: int work(int x) {if(x==1)return 0;else return work(rand(1,x))+1; ...

  5. UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论

    UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论 RNG的抽象表示 RNG的质量指标 RNG的统计检测 在统计计算中,从某个分布中进行采样通常分为两个步骤: 生成随机数z1,z2 ...

  6. boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序

    boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序 实现功能 C++实现代码 实现功能 boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序 C++实现代码 #i ...

  7. boost::sort模块实现支持不同分布的随机数生成器的测试程序

    boost::sort模块实现支持不同分布的随机数生成器的测试程序 实现功能 C++实现代码 实现功能 boost::sort模块实现支持不同分布的随机数生成器的测试程序 C++实现代码 #inclu ...

  8. ITK:Mersenne Twister随机数生成器

    ITK:Mersenne Twister随机数生成器 内容提要 C++实现代码 内容提要 产生一个随机数 C++实现代码 #include "itkMersenneTwisterRandom ...

  9. bzoj3122 [SDOI2013]随机数生成器

    bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\l ...

最新文章

  1. win10html中文乱码,Win10预览版10125中文语言包安装及乱码解决方法
  2. quartz (一) 基于 Quartz 开发企业级任务调度应用
  3. 5.1.2全景声音箱摆位_如何体验全景声
  4. SpringBoot笔记整理(四)
  5. python3 try except or_Python基础10:try except异常处理详解
  6. Linux学习笔记---修改CPU频率为自动调节模式
  7. 十大经典算法_家庭用电预测:线性回归算法(时间与功率功率与电流之间的关系)
  8. pyqt 子窗口控制主窗口绘图_PyQtGraph如何关闭绘图窗口/关闭所有绘图窗口?
  9. 利用MATLAB编写高斯积分
  10. 医疗服务机器人市场复合年增长率将达15.7%
  11. 计算机控制技术期中测试素材2020版
  12. 解决 uniapp 打包次数限制
  13. Markdown记录
  14. java中的异或交换位置_java异或实现两个变量交换
  15. 读书笔记:自动控制原理
  16. Antv踩坑—导入画布数据监听画布渲染完成事件
  17. CSS组件_0 燕尾
  18. DiskPart 常用操作【Windows】
  19. 浏览器在线查看pdf文件 pdf.js的使用教程
  20. 对冲基金表现大盘点(一):DE Shaw

热门文章

  1. Python入门--特殊属性,特殊方法__new__,__init__
  2. JQueryDOM之查找节点
  3. java编译异常和运行时异常_浅谈异常结构图、编译期异常和运行期异常的区别...
  4. 单通道图像保存_3D图像展示篇结构更清晰
  5. 找出不是两个数组共有的元素_06.数组(练习篇)
  6. [leetcode]529. 扫雷游戏 DFS递归、BFS、DFS栈实现
  7. Unity3D之NGUI基础6.1:按钮交互
  8. bzoj 1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛(BFS)
  9. 猜年龄 蓝桥 填空题2013省赛
  10. python实现自动提取句子中的关键字