构造矩阵解决这个问题 【nyoj299 Matrix Power Series】
矩阵的又一个新使用方法,构造矩阵进行高速幂。
比方拿 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】的更多相关文章
- POJ 3233 Matrix Power Series(矩阵快速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...
- POJ 3233 Matrix Power Series 【经典矩阵快速幂+二分】
任意门:http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K To ...
- Poj 3233 Matrix Power Series(矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ...
- [矩阵乘法] 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 ...
- C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速
Matrix Power Series r时间限制: 1 Sec 内存限制: 512 MB 题目描述 给定矩阵A,求矩阵S=A^1+A^2+--+A^k,输出矩阵,S矩阵中每个元都要模m. 数据范围: ...
- POJ 3233 Matrix Power Series (矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 11954 Accepted: ...
- [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: ...
- poj 3233 Matrix Power Series(矩阵二分,高速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 15739 Accepted: ...
- [POJ3233]Matrix Power Series 分治+矩阵
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<= ...
随机推荐
- Use a TL431 shunt regulator to limit high ac input voltage
Most isolated, offline SMPSs (switched-mode power supplies), including flyback, forward, and resonan ...
- Surface Mount Package Details
http://www.centralsemi.com/product/packages/index2.php http://www.infineon.com/cms/cn/product/packag ...
- RHEL内核源码编译
http://blog.csdn.net/lishenglong666/article/details/7320864 http://ftp.redhat.com/pub/redhat/linux/e ...
- openfire在网络不好或掉线时消息丢失的处理方法
在服务端收到消息后增加如下代码 //保存到离线消息表,客户端收到后调用删除离线消息功能,这样可确保即使网络突然掉线或不好的情况下消息丢失的问题 OfflineMessageStore offlineM ...
- 【资料】wod书籍
世界掉落 特点 风化的书卷 可用三次的无限耗材 华丽的书卷 可用5次 无限耗材 队伍唯一 抄录页:新手躲避 近远防御 +34%X技能等级 风化的书卷:新手躲避 华丽的书卷:新手躲避 抄录页:高级闪避技 ...
- FeatureTable()
abstract long addFeature(Feature ...
- 【mysql】二级索引----聚簇索引和非聚簇索引-----
参考地址: https://blog.csdn.net/bigtree_3721/article/details/51335479 https://blog.csdn.net/roxliu/artic ...
- Java 3D游戏引擎——JME(java Monkey Engine)
转自:http://bbs.gameres.com/forum.php?mod=viewthread&tid=180732 JME(java Monkey Engine),一个非常棒的Java ...
- fmri资源站点
1. MRI analysis tutorials:http://www.mccauslandcenter.sc.edu/CRNL/wp-content/tools/tutorial/index.h ...
- iOS设计模式:静态工厂相关
工厂方法模式 定义创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类. *最初的定义出现于<设计模式>(Addison-Wesley,1994) 注意:我讲解 ...