POJ 3233 (矩阵)】的更多相关文章

不要管上面的标题的bug 那是幂的意思,不是力量... POJ 3233 Matrix Power Series 描述 Given a n × n matrix A and a positive integer k, find the sum $ S = A + A^2 + A^3 + - + A^k $. 给你个n×n大小的矩阵A和一个正整数k,求矩阵S = A + A^2 + A^3 + - + A^k. 输入 The input contains exactly one test case…
矩阵幂次之和. 自己想着想着就想到了一个解法,但是还没提交,因为POJ崩了,做了一个FIB的前n项和,也是用了这个方法,AC了,相信是可以得. 提交了,是AC的 http://poj.org/problem?id=3233 我的思路是: 首先原矩阵保留着,然后需要扩大一倍 需要求1--->1的路径数 <= k的,ans = (路径数 = k的) +(路径数 < k)的 等于k的很容易求,就是e^k然后e[1][1]就是答案,那么小于k的,我们需要虚拟一个节点保留着 可以先看看这个http…
题目链接:http://poj.org/problem?id=3233. 题意:给出一个公式求这个式子模m的解: 分析:本题就是给的矩阵,所以非常显然是矩阵高速幂,但有一点.本题k的值非常大.所以要用二分求和来降低执行时间. 代码: #include <set> #include <map> #include <stack> #include <queue> #include <math.h> #include <vector> #i…
地址 http://poj.org/problem?id=3233 大意是n维数组 最多k次方  结果模m的相加和是多少 Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. Sample Input 2 2 4 0 1 1 1 Sample Output 1 2 2 3 题解 矩阵逐步的相乘然后相加是不可以 但是矩阵也有类似快速幂的做法 /*A + A^2 =A(I+A)…
题意:给你矩阵A,求S=A+A^1+A^2+...+A^n sol:直接把每一项解出来显然是不行的,也没必要. 我们可以YY一个矩阵: 其中1表示单位矩阵 然后容易得到: 可以看出这个分块矩阵的左下角那块就可以得到要求的解S 我们取这一块,再减去一个单位矩阵1即可. #include "iostream" #include "vector" #include "cstring" #include "cstdio" using…
题意:求解A+A^2+...+A^k 题解: 1)利用通和公式,原式=(A^k+1 - A)(A - O)^-1 时间复杂度O(n^3lgk) 2)递归求解,A+A^2+...+A^k=(A+A^2+...+A^k/2)+A^k/2(A+A^2+...+A^k/2) 时间复杂度O(n^3lgk^2) 逆矩阵貌似繁琐,直接用第二种方法写的 #include <cstdio> #include <cstring> #include <iostream> #include &…
题意:对于矩阵A,求A^1 + ...... + A^k 按照矩阵十大经典题的思路大致做了下. 在k为奇数时:  A^( k / 2+1)+ 1) * (A^1 + ....... A^(k/2)) + A^(k/2+1) k为偶数时:(A^(k/2) + 1 )* (A^1 + ................A^(k/2)) 但是超时了,应该是没二分的问题. #include<cstdio> #include<iostream> #include<cstring>…
题意:给你矩阵\(A\),求\(S=\sum_{i=1}^{k}A^i\) 构造矩阵 \[ \begin{bmatrix} A & E \\ 0 & E\\ \end{bmatrix} \] 很酷炫的矩阵套矩阵,学习了 PS.更通用的解法是二分求等比 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cstdlib>…
题目链接  请猛戳~ Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. Input The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m <…
题意: 给你一个n*n的矩阵 让你求S: 思路: 只知道矩阵快速幂 然后nlogn递推是会TLE的. 所以呢 要把那个n换成log 那这个怎么搞呢 二分! 当k为偶数时: 当k为奇数时: 就按照这么搞就能搞出来了 (我是看的题解才A的,,, 中间乱搞的时候犯了一些脑残的错误) // by SiriusRen #include <cstdio> #include <cstring> using namespace std; int n,mod,k; struct matrix{int…