题目大意:给定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 构造新矩阵求解+ 快速矩阵幂)的更多相关文章

  1. Matrix Power Series(POJ 3233)

    原题如下: Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 28044   Acce ...

  2. Matrix Power Series POJ - 3233 矩阵幂次之和。

    矩阵幂次之和. 自己想着想着就想到了一个解法,但是还没提交,因为POJ崩了,做了一个FIB的前n项和,也是用了这个方法,AC了,相信是可以得. 提交了,是AC的 http://poj.org/prob ...

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

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

  4. 矩阵十点【两】 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的迹(就是主对角线上各项的 ...

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

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

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

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

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

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

  8. [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:  ...

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

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

随机推荐

  1. 开源 一行代码实现多形式多动画的推送小红点WZLBadge(iOS)-备用

    更新日志 V1.2 2015.09.25 1.UITabBarItem badge is supproted; 2.Enable change badge properties when badge ...

  2. bindingredirect 没有效果

    在搞在线聊天室的时候用到了SignalR 1.1.4,依赖于Newtonsoft.Json 4.5.0.0. 而我另外的dll又依赖Newtonsoft.Json 6.0.0.0 我只引用6.0.0. ...

  3. Android从相册读取图片

    Uri originalUri = data.getData();        //获得图片的uri  bm = MediaStore.Images.Media.getBitmap(resolver ...

  4. Spring中Bean的命名问题及ref和idref之间的区别

    一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查. Spring中Bean的命名 1.每个Bean可以有一个i ...

  5. BZOJ1662: [Usaco2006 Nov]Round Numbers

    1662: [Usaco2006 Nov]Round Numbers Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 147  Solved: 84[Sub ...

  6. HBase面试问题

    一.HBase的特点是什么 1.HBase一个分布式的基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理. 2.HBase适合存储半结构化或非结构化数据,对于数据结构字段 ...

  7. DenyHosts限制SSH登录尝试次数

    DenyHosts官方网站为:http://denyhosts.sourceforge.net 1. 安装 # tar -zxvf DenyHosts-2.6.tar.gz # cd DenyHost ...

  8. pyqt搜索指定信息 github处找到,谢谢这位朋友的帮助了

    def tabunqi(self,text):    #第一遍添加之后,不提示,当第二次添加相同的数据时,就提示下    text1=str(text)    items = self.downwid ...

  9. [转]Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    Spring Boot——2分钟构建spring web mvc REST风格HelloWorld http://projects.spring.io/spring-boot/ http://spri ...

  10. 【Nginx】事件和连接

    不同的操作系统相应不同的事件驱动机制.在Linux 2.6之后使用epoll机制.相应的事件驱动模块是ngx_epoll_module.Nginx的ngx_event_core_module模块依据操 ...