矩阵的又一个新使用方法,构造矩阵进行高速幂。

比方拿 nyoj299 Matrix Power Series 来说

给出这样一个递推式: S = A + A2 + A3 +
… + Ak.

让你求s。A是一个矩阵,而k很大。

怎么办呢?

推理发现:Fn = A + A*F(n-1)

然后我们能够构造矩阵:

(Fn 。1 ) =  (Fn-1 ,1) * (A。0。

A,1) = (F1 , 1) * (A,0。

A,1)^K-1

那么我们就能够用一个矩阵高速幂了。

以下是模板题目的代码:

#include <cstdio>
#include <string>
#include <cmath>
#include <iostream>
using namespace std;
int M;
const long long N = 32*2;
long long t,b,c,f1,f2;
struct tree //基础矩阵
{
long long line,cal;
long long a[N+1][N+1];
};
struct Node //构造矩阵
{
long long line,cal;
long long a[N+1][N+1];
Node(tree x)
{
line=x.line*2;
cal=2*x.cal;
for(int i=0;i<x.line*2;i++)
{
for(int j=0;j<x.cal;j++)
{
a[i][j]=x.a[i%x.line][j];
}
}
for(int i=0;i<x.line;i++)
for(int j=x.cal;j<x.cal*2;j++)
a[i][j]=0;
for(int i=x.line;i<2*x.line;i++){
for(int j=x.cal;j<2*x.cal;j++){
if(i==j)
a[i][j]=1;
else
a[i][j]=0;
}
}
}
}; Node isit(Node x,long long c) //矩阵初始化
{
for(long long i=0;i<N;i++)
for(long long j=0;j<N;j++)
x.a[i][j]=c;
return x;
} Node Matlab(Node x,Node s) //矩阵乘法
{
Node ans(x);
ans.line = x.line,ans.cal = s.cal;
ans=isit(ans,0);
for(long long i=0;i<x.line;i++)
{
for(long long j=0;j<x.cal;j++)
{
for(long long k=0;k<s.cal;k++)
{
ans.a[i][j] += x.a[i][k]*s.a[k][j];
ans.a[i][j]=(ans.a[i][j])%M;
}
}
}
return ans;
}
Node Fast_Matrax(tree x,long long n) //矩阵高速幂
{
Node ans(x),tmp(x);
for(int i=0;i<ans.line/2;i++) //chushihua
{
for(int j=0;j<ans.cal;j++)
{
ans.a[i][j]=ans.a[i+ans.line/2][j];
//printf("%d ",ans.a[i][j]);
}
}
ans.line/=2;
while(n>0)
{
if(n%2)
{
ans=Matlab(ans,tmp);
}
tmp=Matlab(tmp,tmp);
n/=2;
}
return ans;
}
int main()
{
int n,k,m;
while(~scanf("%d%d%d",&n,&k,&m))
{
M=m;
tree p;
p.line=n,p.cal=n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&p.a[i][j]);
Node ans=Fast_Matrax(p,k-1);
for(int i=0;i<ans.line;i++)
{
for(int j=0;j<ans.cal/2;j++)
printf("%d ",ans.a[i][j]);
puts("");
}
}
return 0;
}

构造矩阵解决这个问题 【nyoj299 Matrix Power Series】的更多相关文章

  1. POJ 3233 Matrix Power Series(矩阵快速幂)

    Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...

  2. POJ 3233 Matrix Power Series 【经典矩阵快速幂+二分】

    任意门:http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K To ...

  3. Poj 3233 Matrix Power Series(矩阵乘法)

    Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ...

  4. [矩阵乘法] PKU3233 Matrix Power Series

    [ 矩 阵 乘 法 ] M a t r i x P o w e r S e r i e s [矩阵乘法]Matrix Power Series [矩阵乘法]MatrixPowerSeries Desc ...

  5. C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速

    Matrix Power Series r时间限制: 1 Sec 内存限制: 512 MB 题目描述 给定矩阵A,求矩阵S=A^1+A^2+--+A^k,输出矩阵,S矩阵中每个元都要模m. 数据范围: ...

  6. POJ 3233 Matrix Power Series (矩阵乘法)

    Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 11954   Accepted:  ...

  7. [ACM] POJ 3233 Matrix Power Series (求矩阵A+A^2+A^3...+A^k,二分求和或者矩阵转化)

    Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 15417   Accepted:  ...

  8. poj 3233 Matrix Power Series(矩阵二分,高速幂)

    Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 15739   Accepted:  ...

  9. [POJ3233]Matrix Power Series 分治+矩阵

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<= ...

随机推荐

  1. WIFI模块 RTL8188EUS Realtek

    http://item.taobao.com/item.htm?spm=a230r.1.14.24.KnooKa&id=26119704895 W12 产品是一款采用国际先进台湾瑞昱Realt ...

  2. Ubuntu 11.04安装GCC 4.6.1

    首先下载相应的源代码:ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.6.1/#下载 gcc-4.6.1.tar.bz2 ftp://ftp.dti.a ...

  3. setTimeout你知多少

    假期这么快就结束了,其实对我来说没什么影响,因为我一周才两节课,对于课多的同学来说,我天天在休假,不要羡慕哟~  但休假并不代表闲着,还是得苦逼的编代码,唉..一入程序深似海.. 不管学得多少,还是总 ...

  4. linux开放关闭防火墙端口

    原文:http://blog.csdn.net/fengspg/article/details/21337617 1) 重启后生效 开启: chkconfig iptables on 关闭: chkc ...

  5. OpenERP实施记录(9):销售一批电脑

    本文是<OpenERP实施记录>系列文章的一部分. 前述的基础数据配置完成之后,我们就可以开始业务处理了. 1. 业务部门接到沃尔玛客户三台联想笔记本电脑的需求.销售 > Sales ...

  6. 每天进步一点点——关于SSD写入放大问题

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/29812433 1. 关于SSD的写入放大     之前在SSD(Solid State Dr ...

  7. JDK JRE区别

    JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.5.x/目录下的JRE.而C:/Program Files/Java/ ...

  8. Serlvet Response 输出1x1 图片

    import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import ja ...

  9. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  10. Event.RESIZE 的事件不触发

    stage.scaleMode=StageScaleMode.NO_SCALE;(或者设置其他缩放模式,如EXACT_FIT等):   如果没有设置 stage的缩放模式的话, stage.addEv ...