\[\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;
}

  

最新文章

  1. css3动态旋转魔方练习
  2. Find the Duplicate Number
  3. Rocky4.2下安装金仓v7数据库(KingbaseES)
  4. POJ2289-Jamie&#39;s Contact Groups-二分图多重匹配-ISAP
  5. C++ Primer 学习笔记_95_用于大型程序的工具 --多重继承与虚继承
  6. css布局模型之绝对定位与相对定位
  7. 【经验】angularjs 实现带查找筛选功能的select下拉框
  8. 全球AI界最值得关注的十位科学家
  9. C#隐藏桌面图标和任务栏
  10. Android有效解决加载大图片时内存溢出的问题
  11. 【IOS开发笔记01】学生管理系统(上)
  12. Spring知识点总结
  13. java项目开发第六天——天若有情天亦老,人间正道是沧桑
  14. tomcat配置不用访问工程名
  15. jquery $(document).ready() 与window.onload的区别(转)
  16. Linux centos ssh
  17. Linux下Jenkins服务器搭建
  18. C# — 创建Windows服务进阶版
  19. NSArray NSMutableArray
  20. 深入出不来nodejs源码-流程总览

热门文章

  1. 整理 iOS 9 适配中出现的坑(图文)(转)
  2. linux 下查mac
  3. svn删除所有.svn文件
  4. 重温WCF之WCF传输安全(十三)(4)基于SSL的WCF对客户端采用证书验证(转)
  5. 无废话ExtJs 入门教程十六[页面布局:Layout]
  6. 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
  7. Oracle的thin驱动和oci驱动有什么不同?哪个性能好些?
  8. mac下php开发环境搭建+CI框架使用
  9. phpcms_v9 多图字段 内容页,首页,分页自定义字段调用
  10. [Linux][VMWare] 学习笔记之安装Linux系统-网络配置