POJ3233 构造子矩阵+矩阵快速幂】的更多相关文章

题意:给你矩阵A,求S=A+A^1+A^2+...+A^n sol:直接把每一项解出来显然是不行的,也没必要. 我们可以YY一个矩阵: 其中1表示单位矩阵 然后容易得到: 可以看出这个分块矩阵的左下角那块就可以得到要求的解S 我们取这一块,再减去一个单位矩阵1即可. 为了保持右下角一直是1,所以右上的位置必须是0,由于需要不断移位,所以1是必要的,A是必要的,所以第一列保证移位, 第二列保证保留1,因此我们能成功构造出.... 这个题还可以根据等比矩阵的性质来进行求解...后面补(x 1 #in…
[解题思路] 给一张神图,推理写的灰常明白了,关键是构造共轭函数,这一点实在是要有数学知识的理论基础,推出了递推式,接下来就是矩阵的快速幂了. 神图: 给个大神的链接:构造类斐波那契数列的矩阵快速幂 /* * Problem: HDU No.4565 * Running time: 62MS * Complier: G++ * Author: javaherongwei * Create Time: 9:55 2015/9/21 星期一 */ #include <bits/stdc++.h>…
太妙了..通过矩阵乘法来加速递推 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define mod 10000 int n; ][]){//一维数组和矩阵相乘 ]={}; ;i<;i++) ;j<;j++) c[j]=(c[j]+(long long)f[i]*a[i][j])%mod; memcpy(f,c,sizeof c); } ][]){//矩…
http://acm.hdu.edu.cn/showproblem.php?pid=2256 题意:给定 n    求解   ? 思路: , 令  , 那么 , 得: 得转移矩阵: 但是上面求出来的并不是结果,并不是整数.需要加上, 由于 所以结果为 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<bits/stdc++.h> using namespace std; #define rep0…
link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = 矩阵2.然后就是矩阵快速幂了. 1 1 ai bi ai*bi Si 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 ai+1 bi+1 ai+1*bi+1 Si+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 AY…
题目要求的是 A+A2+...+Ak,而不是单个矩阵的幂. 那么可以构造一个分块的辅助矩阵 S,其中 A 为原矩阵,E 为单位矩阵,O 为0矩阵    将 S 取幂,会发现一个特性: Sk +1右上角那一块不正是我们要求的 A+A2+...+Ak 于是构造出 S 矩阵,然后对它求矩阵快速幂即可,最后别忘了减去一个单位阵. 时间降为O(n3log2k) PS.减去单位矩阵的过程中要防止该位置小于零. #include<iostream> #include<cstdio> #inclu…
题目链接:http://poj.org/problem?id=3233 Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 28105   Accepted: 11461 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. Input Th…
A Simple Math Problem 一个矩阵快速幂水题,关键在于如何构造矩阵.做过一些很裸的矩阵快速幂,比如斐波那契的变形,这个题就类似那种构造.比赛的时候手残把矩阵相乘的一个j写成了i,调试了好久才发现.改过来1A. 贴个AC的代码: const int N=1e5+10; ll k,m,s[10]; struct mat { ll a[10][10]; }; mat mat_mul(mat A,mat B) { mat res; memset(res.a,0,sizeof(res.a…
思路: ax+b cx+d 构造矩阵+矩阵快速幂 (需要加各种特判,,,,我好像加少了- ) //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define int long long const int mod=1000000007; int n,m,a,b,c,d;char N[1000500],M[1000500]; stru…
题目链接 题意 : 实际上可以转化一下题意 要求求出用三个不同元素的字符集例如 { 'A' .'B' .'C' } 构造出长度为 n 且不包含 AAA.BBB CCC.ACB BCA.CAC CBC 这其中任意一个字符串的方案数 分析 : 方法一 (BM 求线性递推) 直接暴力出前 10 项的答案.然后猜它其实可以由线性递推递推而来 丢进杜教的 BM 模板里面就可以直接求出第 N 项了 实际上这个可以不用猜.这种不包含某些串的题目 如果你做过类似的.就会知道实际上是可以构造出一个矩阵然后快速幂…