Matrix Power Series(POJ 3233 构造新矩阵求解+ 快速矩阵幂)
题目大意:给定A,k,m(取模),求解S = A + A2 + A3 + … + Ak.
思路:此题为求解幂的和,一开始直接一个个乘,TLE。时间消耗在累加上。此处巧妙构造新矩阵
p= A 0
1 1 ,1 代表单位矩阵。那么p*p=A 0
A+1,1
p*p*p=A*A 0
A*A+A+1 1
那么最后求得的结果就是左下角的矩阵减去一个单位矩阵。最后需要注意的是若在简单为矩阵的时候结果为负数,那么为m-1;
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std; typedef vector<int> vec;
typedef vector<vec> mat; mat a,b;
int n,k,m;
mat mul(mat x,mat y)
{
mat c(*n,vec(*n));
int sum;
int i,j,w;
for(i=;i<*n;i++)
for(j=;j<*n;j++)
{
sum=;
for(w=;w<*n;w++)
sum=(sum+x[i][w]*y[w][j])%m;
c[i][j]=sum;
}
return c;
} mat m_pow(mat x,int p)
{
mat res(*n,vec(*n));
int i;
for(i=;i<*n;i++)
res[i][i]=;
while(p>)
{
if(p&)
res=mul(res,x);
x=mul(x,x);
p>>=;
}
return res;
} int main()
{
int i,j,x;
freopen("in.txt","r",stdin);
cin>>n>>k>>m;
mat a(*n,vec(*n)); for(i=;i<n;i++)
for(j=;j<n;j++)
cin>>a[i][j];
for(i=;i<n;i++)
for(j=n;j<*n;j++)
a[i][j]=;
for(i=n;i<*n;i++)
a[i][i-n]=a[i][i]=; a=m_pow(a,k+); for(i=n;i<*n;i++)
{
for(j=;j<n;j++)
{
if((i-j)==n)
a[i][j]--;
if(a[i][j]<)
a[i][j]+=m;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return ;
}
Matrix Power Series(POJ 3233 构造新矩阵求解+ 快速矩阵幂)的更多相关文章
- Matrix Power Series(POJ 3233)
原题如下: Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 28044 Acce ...
- Matrix Power Series POJ - 3233 矩阵幂次之和。
矩阵幂次之和. 自己想着想着就想到了一个解法,但是还没提交,因为POJ崩了,做了一个FIB的前n项和,也是用了这个方法,AC了,相信是可以得. 提交了,是AC的 http://poj.org/prob ...
- POJ 3233 Matrix Power Series 【经典矩阵快速幂+二分】
任意门:http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K To ...
- 矩阵十点【两】 poj 1575 Tr A poj 3233 Matrix Power Series
poj 1575 Tr A 主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1575 题目大意:A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的 ...
- Poj 3233 Matrix Power Series(矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ...
- POJ 3233 Matrix Power Series (矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 11954 Accepted: ...
- POJ 3233 Matrix Power Series(矩阵快速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...
- [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: ...
随机推荐
- C语言初学 比较五个整数并输出最大值和最小值1
#include<stdio.h> #include<math.h> int max(int x,int y) { if(x>y) return x; else retu ...
- ZooKeeper笔记--集群安装配置 【转】
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命名服务(Naming S ...
- 总结 xib
总结 其实,你完全不需要做一个 “艰难的决定”,你可以像 QQ 和微信那样,根据具体情况来选择性的使用 xib 和 storyboard.这里有我的一些建议: 对于复杂的.动态生成的界面,建议使用手工 ...
- Chrome下的语音控制框架MyVoix.js使用篇(二)
上一篇博文中,初步介绍了MyVoix.js的基本功能,这次我们将演示一个完整的实例. 先上代码 <!DOCTYPE HTML> <html> <head> < ...
- 这样就算会了PHP么?-2
学些关于函数FUNCTION方面的东东.. 感觉和PYTHON的APLLY功能差不多.. <?php function come(){ echo "来啦<p>"; ...
- 新技术:Qt for Native Client (and emscripten)
http://blog.qt.io/blog/2015/09/25/qt-for-native-client-and-emscripten/
- Maven, IntellJ Idea 配置注意点
1. Maven要自己安装一个: 2. Maven设置中,settings.xml和repository地址都配置成自己: 3. Enable Auto import 4. 找不到jar文件时,自己的 ...
- BZOJ2393: Cirno的完美算数教室
2393: Cirno的完美算数教室 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 138 Solved: 83[Submit][Status] D ...
- Android ToggleButton使用介绍
ToggleButton,就是开关按钮,包括选中和未选中状态,并且需要为不同的状态设置不同的事件处理: 例如:使用图片来展示ToggleButton不同的状态: MainActivity.java p ...
- poj 3744 Scout YYF I (矩阵)
Description YYF -p. Here is the task, given the place of each mine, please calculate the probality t ...