矩阵
文章平均质量分 87
cillyb
这个作者很懒,什么都没留下…
展开
-
Codeforces 450B Jzzhu and Sequences(矩阵快速幂)
f1 = x, f2 = y; fi = f(i-1) + f(i+1) fi = f(i-1)-f(i-2);类似于斐波那契构造矩阵| an| | 1 -1 || an-1 || |= | | * ||| an-1| | 1 0| | an-2 |代码:#include原创 2016-10-12 18:08:16 · 1129 阅读 · 0 评论 -
hdoj 5667 Sequence(矩阵快速幂、费马小定理)
看着就像是要用矩阵做,但是有个a^b,不知道怎么去推递推式。思路:对两边取对数,就可以得到loga(fn) = c*loga(fn-1) + loga(fn-2) + b,然后令Fn = loga(fn), 可以得到Fn = c*fn-1 + fn-2 + b之后构造矩阵快速幂就行了,得到Fn, fn = a^(Fn), 要mod p,指数又特别大,所以需要用到原创 2016-11-16 17:45:33 · 546 阅读 · 1 评论 -
hdoj 4549 M斐波那契数列(费马小定理降幂,矩阵快速幂)
一开始以为和斐波那契差不多,很简单的就能构造出矩阵。。。结过是乘法,硬是构造不出来。可以由F[0] = a,F[1] = b,F[n] = F[n-1] * F[n-2] ( n > 1 ) 推出fn = a^fib(n-1)*b^fib(n)%mod可知这个指数是相当大的,所以需要用费马小定理或是欧拉定理降幂。a ^ n = a ^ (n % euler ( M原创 2016-10-19 20:37:00 · 581 阅读 · 0 评论 -
哈理工邀请赛 F.Fibonacci Again (矩阵快速幂)
题目地址:点击打开链接比赛的时候打表找到了规律,6个一循环,可以前没做过类似的you周期的求矩阵快速幂..没构造出来。以下参考博客:点击打开链接解题思路:解决本题的一个关键就是发现其表达式和原来的斐波那契数列的不同,通过打表分析观察,可以发现一个以6为周期的循环。通过这些表达式就可以将这道问题转化成常见的矩阵快速幂问题了,因为后面原创 2016-12-04 17:35:38 · 503 阅读 · 0 评论 -
之江学院2017ACM 校赛Problem D: qwb与神奇的序列(找规律 快速幂)
有一个序列,初始时只有两个数x和y,之后每次操作时,在原序列的任意两个相邻数之间插入这两个数的和,得到新序列。举例说明:初始:1 2操作1次:1 3 2操作2次:1 4 3 5 2……请问在操作n次之后,得到的序列的所有数之和是多少?Input多组测试数据,处理到文件结束(测试例数量输入为一行三个整数x,y,n,相邻两个数之间用单个空格隔开。(0原创 2017-06-01 20:18:31 · 1642 阅读 · 0 评论 -
hrbust 1401 九连环(矩阵快速幂)
九连环Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 65(37 users)Total Accepted: 34(31 users)Rating: Special Judge: NoDescription相信大家都玩过原创 2017-07-14 21:22:35 · 596 阅读 · 0 评论 -
POJ 2778 DNA Sequence(AC自动机+矩阵快速幂)
题意:给你m个病毒串,要求长度为n,不包含病毒串的个数。m (0 代码:AC自动机本身其实也可以看作是个状态机,每个节点可以向多个方向转移,然后根据状态间能不能转移。对于这题,要求长度为n,所以我们可以构造一个矩阵表示每个点一步能转移到的节点,矩阵的n次幂后,第一行的和就是起点出发走n步的方案数,也就是构成长为n的方案数。因为不能包含病毒,所以危险结点要去掉,也就是去掉向危险结点的原创 2017-08-11 01:12:52 · 393 阅读 · 0 评论 -
Lightoj 1070 Algebraic Problem(矩阵快速幂)
题意:给你a+b和a*b的值,求a^n+b^n思路:代码:#include#include#includeusing namespace std;typedef unsigned long long ll;int n, m;struct node{ ll s[3][3]; node() {} node(ll s1, ll s2, l原创 2017-08-06 00:04:32 · 370 阅读 · 0 评论 -
Lightoj 1132 Summing up Powers(矩阵快速幂)
题意:给你n和k,求(1^k + 2^k + 3^k + ... + n^k) % 2^32, n 思路:可以知道f(x+1) = f(x) + (x+1)^k,(x+1)^k 可以用二项式定理展开变成C(k, 0)*x^k+C(k, 1)*x^(k-1)...+C(k, k)*x^0这就可以构造矩阵快速幂了。具体思路:原创 2017-08-06 00:35:16 · 476 阅读 · 0 评论 -
2017 Multi-University Training Contest 10 1002 Array Challenge HDU 6172(找规律 矩阵快速幂)
题意:There’s an array that is generated by following rule.h0=2,h1=3,h2=6,hn=4hn−1+17hn−2−12hn−3−16And let us define two arrays bnandan as below.bn=3hn+1hn+9hn+1hn−1+9h2n+27hnhn−1−18hn+1−126hn−81原创 2017-08-24 21:56:57 · 550 阅读 · 0 评论 -
HDU 5863 cjj's string game(矩阵优化DP)
题意:让你用k种字母构造出两个长度为n的a,b串,问满足a,b最长连续对应子串相同的长度不恰为m的方案数。 n(1思路:dp[i][j]:表示长度为i的串,长度j后缀连续对应相等。转移方程:dp[i][0]=(dp[i-1][0]+…+dp[i-1][m]) * k * (k-1) dp[i][j]=dp[i-1][j-1] * k,j=1,2,…,m 这样原创 2017-09-08 15:32:09 · 408 阅读 · 0 评论 -
uva 10655 Contemplation! Algebra(矩阵快速幂)
题目链接:点击打开链接一开始以为只要用求根公式求出a,b然后就用常数快速幂就可以解决。然而想的太简单了,题目只说p,q是整数,但a,b有可能是实数,所以不能用简单的求根公式来做。f(n) = a^n+b^nf(n-1) = a^(n-1)+b^(n-1)-f(n-1)*(a+b) = a*b^(n-1)+b*a^(n-1)+f(n)-原创 2016-10-30 19:58:44 · 427 阅读 · 0 评论 -
poj 3233 Matrix Power Series(矩阵幂的和,矩阵快速幂)
此题要求的是A+A^2+A^3...+A^k,当然逐个求出作和n^3*k复杂度肯定是要超时的。 所以可以构造一个矩阵Sk = I(单位矩阵) + A + A^2 + A^3...+ A^k-1,Sk = Sk-1 + Ak-1.所以就可以构造出矩阵快速幂的形式:每个方格就是一个n*n的矩阵。 要求A+A^2+A^3...+A^k就是要求Sk+1 - I,原创 2016-11-10 12:01:47 · 454 阅读 · 0 评论 -
uva 11149 Power of Matrix(矩阵幂的和,同poj3233)
题目:点击打开链接思路见上一篇博客.代码:#includeusing namespace std;const int mod = 10;typedef long long ll;ll n, k;struct node{ ll s[100][100]; void init(void) { memset(s, 0, sizeof(s)); }};n原创 2016-11-10 13:37:10 · 405 阅读 · 0 评论 -
poj 3070 Fibonacci(矩阵快速幂模板题)
裸的矩阵快速幂,题目里连矩阵都告诉你了。代码:#include#include#include#includeusing namespace std;const int mod = 1e4;struct node{ int s[2][2]; node() {} node(int a, int b, int c, int d) {原创 2016-10-12 14:36:38 · 384 阅读 · 0 评论 -
fzu 1683 纪念SlingShot(矩阵快速幂)
题意:f(0)=1,f(1)=3,f(2)=5,f(n)=3f(n-1)+2f(n-2)+5f(n-3)。求s(n)=(f(0)+f(1)……+f(n))%2009。思路:S(n)=S(n-1)+F(n)=S(n-1)+3F(n-1)+2F(n-2)+7F(n-3),因此构造矩阵:代码://注意考虑n=0,1时的输出#include原创 2016-10-12 20:59:57 · 573 阅读 · 0 评论 -
hdoj 1575 Tr A(矩阵快速幂,模板题)
矩阵也直接给了不用推了。。代码:#includeusing namespace std;const int mod = 9973;int n;struct node{ int s[15][15];};node mul(node a, node b){ node t; memset(t.s, 0, sizeof(t.s)); for(原创 2016-10-12 21:06:36 · 522 阅读 · 0 评论 -
hdoj 5015 233 Matrix(矩阵的构造)
一开始根本没想到可以这样构造矩阵,看了半天也是半天才看懂,太巧了这题。。较好的讲解:点击打开链接还要注意的是要使用long long代码:#include#include#includeusing namespace std;const int mod = 10000007;int n, m, N;struct node{ long l原创 2016-10-12 23:33:17 · 483 阅读 · 0 评论 -
hdoj 4965 Fast Matrix Calculation(矩阵快速幂)
线代课上还教过这个公式(AB)^n=A*(BA)^(n-1)^B。。。可以用这个公式优化不然计算出C=A*B是个很大的矩阵再进行求幂,复杂度会非常高。代码:#includeusing namespace std;const int maxn = 1005;int ans[maxn][maxn], res[maxn][maxn], a[maxn][maxn], b[原创 2016-10-24 00:26:06 · 397 阅读 · 0 评论 -
hdoj 4565 So Easy!(构造无理数共轭,矩阵快速幂)
最难的是要想到无理数共轭...参考题解:点击打开链接还要注意注意负数的取模,可以先+mod再进行取模.代码:#includeusing namespace std;typedef long long ll;ll a, b, m;struct node{ ll s[2][2]; node() {} node(ll a, ll b, ll c,原创 2016-10-13 20:53:03 · 781 阅读 · 0 评论 -
poj 3734 Blocks (递推,矩阵快速幂)
原来矩阵还能解决这样的题。。真是长知识了让我们试着从左边开始染色。设染到第i个方块,红绿都是偶数的方案数是ai,红绿方块数为一奇一偶的方案数是bi,红绿方块数都为奇数的方案数是ci;我们就可以得到这样的递推式:ai = 2*ai + bibi = 2*ai + 2*bi + 2*cici = bi + 2*ci所以就可以构造出矩阵了。。代原创 2016-11-05 17:43:19 · 432 阅读 · 0 评论 -
hdoj 4990 Reading comprehension(矩阵快速幂)
找到递推式,接下来构造矩阵就可以了。还要注意用long long存矩阵代码:#includeusing namespace std;typedef long long ll;ll m;struct node{ ll s[3][3]; node() {} node(ll a, ll b, ll c, ll d, ll e, ll f, ll g, ll原创 2016-10-15 16:07:58 · 449 阅读 · 0 评论 -
uva 10870 Recurrences(矩阵快速幂)
类似斐波那契,d为几构造几阶的矩阵即可。题目:点击打开链接代码:#includeusing namespace std;typedef long long ll;ll d, n, m, a[16], f[16];struct node{ ll s[16][16]; void init(void) { memset(s, 0, sizeof(s)); }};原创 2016-10-28 13:05:31 · 403 阅读 · 0 评论 -
hdoj 4686 Arc of Dream(矩阵快速幂)
一个不难构造的矩阵快速幂,自己硬是找了两天才找到自己错在细节上的东西。自己犯得错:1.指数是long long,自己却传了个int2.构造单位矩阵前,只是把对角线赋值为1,却忘了memset其他值都为0希望以后别因为这些小错,耽误那么多的时间!代码:#includeusing namespace std;typedef long long ll;原创 2016-10-19 16:52:48 · 447 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2) E. Darth Vader and Tree(矩阵优化DP)
题意:给你一颗树,有无限个节点,每个节点有n个儿子,据他第i个儿子的距离为di,问这棵树有多少个点离根的距离不超过x。思路: f[i]表示路径长度恰为i的能到的点个数,首先可以列出一个DP:f[i]=∑nj=1f[i−dj],边界是f[0]=1。 似乎不是那么好做。但是注意到,di=100,这意味着DP可以简化一下,变成连续的;f[i]=∑100j=1f[i−j]∗原创 2017-09-08 17:40:46 · 344 阅读 · 0 评论