题目 给定一个 $n \times n$  的矩阵 $A$ 和正整数 $k$ 和 $m$.求矩阵 $A$ 的幂的和. $$S = A + A^2 + ... + A^k$$ 输出 $S$ 的各个元素对 $M$ 取余后的结果($1 \leq n \leq 30, 1 \leq k \leq  10^9, 1 \leq M \leq 10^4$). 分析 数据范围 $n$ 很小,$k$ 很大,不肯能逐一求得. 由于具有等比性质, 设  $S_k = I + A + ... + A^{k-1}$ 则有…
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<=30)的矩阵,让你求 \(\sum\limits_{i=1}^{k}A^i\) 并将答案对取模p 输入格式: 有多组测试数据,其中第一行有3个正整数,为n,k(k<=\(10^9\)),p(p<=\(10^4\)) 后面有n行,每行n个数. 输出格式: 输出最后答案的矩阵. 输入输出样例 inpu…
http://poj.org/problem?id=3233 题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加).输出的数据mod m.k<=10^9.这道题两次二分,相当经典.首先我们知道,A^i可以二分求出.然后我们需要对整个题目的数据规模k进行二分.比如,当k=6时,有:A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3)应用这个式子后,规模…
Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 27277   Accepted: 11143 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 ca…
题目:Matrix Power Series 传送门:http://poj.org/problem?id=3233 分析: 方法一:引用Matrix67大佬的矩阵十题:这道题两次二分,相当经典.首先我们知道,A^i可以二分求出.然后我们需要对整个题目的数据规模k进行二分.比如,当k=6时,有:$ S(6)= A + A^2 + A^3 + A^4 + A^5 + A^6 =\underline{(A + A^2 + A^3)} + A^3*\underline{(A + A^2 + A^3)}.…
题面 \(solution:\) 首先,如果题目只要我们求\(A^K\) 那这一题我们可以直接模版矩乘快速幂来做,但是它现在让我们求$\sum_{i=1}^{k}{(A^i)} $ 所以我们思考一下这两者是否有什么关系.仔细一想,不难发现几个东西: 一次矩阵乘法复杂度为\(O(n^3)\),所以我们不能进行太多次矩阵乘法 快速幂的复杂度为\(O(logk)\) 再乘一下矩阵乘法的复杂度,我们现在只能再接受\(O(log)\)级别的处理了 矩阵乘法满足交换律和结合律!!!! 若我们已经知道了\(A…
题目要求的是 A+A2+...+Ak,而不是单个矩阵的幂. 那么可以构造一个分块的辅助矩阵 S,其中 A 为原矩阵,E 为单位矩阵,O 为0矩阵    将 S 取幂,会发现一个特性: Sk +1右上角那一块不正是我们要求的 A+A2+...+Ak 于是构造出 S 矩阵,然后对它求矩阵快速幂即可,最后别忘了减去一个单位阵. 时间降为O(n3log2k) PS.减去单位矩阵的过程中要防止该位置小于零. #include<iostream> #include<cstdio> #inclu…
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 < 104). Then…
题目链接:http://poj.org/problem?id=3233 题目意思:给一个矩阵n*n的矩阵A和一个k,求一个式子 S = A + A2 + A3 + … + Ak. 这个需要用到等比数列和的二分加速. 当n为奇数的时候,Sn=Sn-1+A^k; 当n为偶数的时候,Sn=(S[n/2]+E)*A^(k/2) 自己xjb推一下就知道等比数列和的二分加速是咋回事了.我举个例子,我们假设求等比数列2,4,8,16,32,64的和s=(8+1)*(2+4+8),而2+4+8=(2+4)+8,…
S(k)=A^1+A^2...+A^k. 保利求解就超时了,我们考虑一下当k为偶数的情况,A^1+A^2+A^3+A^4...+A^k,取其中前一半A^1+A^2...A^k/2,后一半提取公共矩阵A^k/2后可以发现也是前一半A^1+A^2...A^k/2.因此我们可以考虑只算其中一半,然后A^k/2用矩阵快速幂处理.对于k为奇数,只要转化为k-1+A^k即可.n为矩阵数量,m为矩阵大小,复杂度O[(logn*logn)*m^3] #include <iostream> #include &…