博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3233 Matrix Power Series 二分+矩阵乘法
阅读量:5943 次
发布时间:2019-06-19

本文共 935 字,大约阅读时间需要 3 分钟。

链接:

题意:给一个N*N的矩阵(N<=30)S = A + A^2 + A^3 + … + A^k(k<=10^9)。

思路:非常明显直接用矩阵高速幂暴力求和的方法复杂度O(klogk)。肯定会超时。我採用的是二分的方法, A + A^2 + A^3 + … + A^k=(1+A^(k/2)) *(A + A^2 + A^3 + … + A^(k/2))。这样就能够提出一个(1+A^(k/2)),假设k是奇数,单独处理A^k。

代码:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PI acos(-1.0)#define maxn 35#define maxm 35#define INF 10005#define eps 1e-8typedef long long LL;typedef unsigned long long ULL;using namespace std;int k,mm;struct Matrix{ int n,m; int a[maxn][maxm]; void init() { n=m=0; memset(a,0,sizeof(a)); } Matrix operator +(const Matrix &b) const { Matrix tmp; tmp.n=n; tmp.m=m; for(int i=0; i
>=1; m=m*m; } return tmp;}int main(){ Matrix A,ans,In,res; while(~scanf("%d%d%d",&A.m,&k,&mm)) { ans.init(); res.init(); res.m=res.n=ans.m=ans.n=In.m=In.n=A.n=A.m; for(int i=0; i

转载地址:http://adwxx.baihongyu.com/

你可能感兴趣的文章
解释器中对 标号 的使用
查看>>
分享:FireBreath 1.7.0 RC1 发布
查看>>
<<Information Store and Management>>读书笔记 之五
查看>>
2012年50个顶级的photoshop教程:(一)图形绘画类
查看>>
数据库和c#类型映射
查看>>
(转)swc与swf的区别
查看>>
javascript-Array类型 二
查看>>
Jie Bao 牛人cv
查看>>
海量数据处理的 Top K算法(问题) 小顶堆实现
查看>>
HTC 通过 WifiConfiguration 修改 SSID
查看>>
substring
查看>>
Java抽象类和接口的区别(好长时间没看这种文章了)
查看>>
markdown语法
查看>>
oracle11g dataguard 完全手册
查看>>
关系模式数据库设计范式深入浅出
查看>>
打油诗 现代教育经济学
查看>>
隐马尔科夫模型(Hidden Markov Models) 系列之二
查看>>
OpenXml操作Word的一些操作总结.无word组件生成word.
查看>>
WPF模板
查看>>
java.lang.ClassCastException: sun.proxy.$Proxy11 cannot be cast to分析
查看>>