
数学-矩阵快速幂
文章平均质量分 51
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 10518 - How Many Calls?(矩阵快速幂)
题目链接:uva 10518 - How Many Calls?公式f(n) = 2 * F(n) - 1, F(n)用矩阵快速幂求。#include #include long long n;int b;struct state { int s[2][2]; state(int a = 0, int b = 0, int c = 0, int d = 0原创 2013-10-30 15:40:50 · 1913 阅读 · 0 评论 -
uva 10689 - Yet another Number Sequence(矩阵快速幂)
题目链接:uva 10689 - Yet another Number Sequence题目大意:给定斐波那契数列头两项,求的n项取模10m解题思路:矩阵快速幂。#include #include #include using namespace std;const int maxn = 5;const int M[maxn+5] = {1, 10, 100, 10原创 2014-08-18 00:00:17 · 1117 阅读 · 0 评论 -
uva 10655 - Contemplation! Algebra(矩阵快速幂)
题目连接:uva 10655 - Contemplation! Algebra题目大意:输入非负整数,p,q,n,求an+bn的值,其中a和b满足a+b=p,ab=q,注意a和b不一定是实数。解题思路:定义f(n)=an+bn,则有f(n)∗(a+b)=(an+bn)∗(a+b)=an+1+abn+ban+bn+1=f(n+1)+abf(n−1), 所以f(n+1)=(a+b)原创 2014-08-17 23:30:39 · 1981 阅读 · 0 评论 -
uva 11149 - Power of Matrix(矩阵倍增)
题目链接:uva 11149 - Power of Matrix题目大意:给定一个矩阵,求∑ikAi解题思路:因为k比较大,所以即使用快速幂的话复杂度还是有点高,利用矩阵倍增的方法∑ikAi=(1+Ak/2)∗∑ik/2Ai#include #include #include using namespace std;const int maxn = 50;const原创 2014-08-17 23:42:38 · 1548 阅读 · 0 评论 -
uva 11551 - Experienced Endeavour(矩阵快速幂)
题目链接:uva 11551 - Experienced Endeavour题目大意:给定一个序列的变换,求变换r次后各项的值。解题思路:矩阵快速幂,不解释。#include #include #include using namespace std;const int maxn = 55;const int MOD = 1000;struct Mat {原创 2014-08-18 00:06:04 · 1135 阅读 · 0 评论 -
hdu 5015 233 Matrix(矩阵快速幂)
题目链接:hdu 5015 233 Matrix题目大意:给定一个矩阵第一列,然后第一行为233,2333,23333....问说n行m列的数为多少。解题思路:根据数据范围很明显是矩阵快速幂,构造一个(n+2)(n+2)矩阵,递推每一列。#include #include #include using namespace std;typedef long long l原创 2014-09-15 19:38:17 · 829 阅读 · 2 评论 -
Codeforces 450B Jzzhu and Sequences(矩阵快速幂)
题目链接:Codeforces 450B Jzzhu and Sequences题目大意:给定序列f1=x,f2=y,fi=fi+1−fi−1,求fn解题思路:矩阵快速幂。#include #include #include using namespace std;typedef long long ll;const ll mod = 1e9+7;ll s[原创 2014-09-24 15:13:30 · 1475 阅读 · 0 评论 -
hdu 2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
题目链接:hdu 2243 考研路茫茫——单词情结题目大意:略。解题思路:和poj 2778 DNA Sequence类似的做法,不同的是这道题目是要求小于长度L的,所以要多加一个维护总和,做过矩阵快速幂的人肯定都会这个。然后我们肯定是先算出不包含词根的,用总的减掉就是要求的答案,所以我又加了两个用来维护总的,长度为i时,总的可能串有26i,累加。题目要求取模264原创 2014-11-09 11:16:06 · 1381 阅读 · 0 评论 -
poj 2778 DNA Sequence(AC自动机+矩阵快速幂)
题目链接:poj 2778 DNA Sequence题目大意:给定一些含有疾病的DNA序列,现在给定DNA长度,问有多少种不同的DNA序列是健康的。解题思路:对DNA片段建立AC自动机,因为最多10个串,每个串最长为10,所以最多可能有100个节点,在长度为n时以每个节点终止的健康字符串个数形成一个状态集,通过AC自动机形成的边可以推导出n+1的状态集,走到单词节点是原创 2014-11-08 23:37:59 · 1807 阅读 · 0 评论 -
uva 11651 - Krypton Number System(矩阵快速幂)
题目链接:uva 11651 - Krypton Number System题目大意:给定进制base,和分数score,求在base进制下,有多少个数的值为score,要求不能有连续相同的数字以及前导0.计算一个数的值即为相邻两位数的平方差和。解题思路:因为score很大,所以直接dp肯定超时,但是即使对于base=6的情况,每次新添一个数score最大增加25(0-5),所原创 2014-08-20 23:08:00 · 2151 阅读 · 2 评论 -
hdu 5318 The Goddess Of The Moon(矩阵快速幂)
题目链接:hdu 5318 The Goddess Of The Moon将50个串处理成50*50的矩阵,注意重复串。#include #include #include #include using namespace std;const int maxn = 55;const int mod = 1e9+7;int N, M, A[maxn];st原创 2015-07-28 20:53:25 · 1492 阅读 · 0 评论 -
hdu 5411 CRB and Puzzle(矩阵快速幂)
题目链接:hdu 5411 CRB and Puzzle根据给定边都建矩阵,并且再加上一个终止符,所有puzzle可以指向终止符。#include #include #include using namespace std;const int maxn = 55;const int mod = 2015;struct Mat { int r, c,原创 2015-08-21 22:29:20 · 679 阅读 · 0 评论 -
hdu 5435 Peace small elephant(矩阵快速幂)
题目链接:hdu 5435 Peace small elephant宽度很小,长很大,明显是矩阵快速幂,枚举两个二进制状态,判断一下是否可以转移,建出矩阵。#include #include #include #include using namespace std;typedef long long ll;const int maxn = (1<<7)原创 2015-09-12 22:15:34 · 635 阅读 · 0 评论 -
hdu 4686 Arc of Dream(矩阵快速幂)
题目链接:hdu 4686 Arc of Dream代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 10;const int mod = 1e9 + 7;struct Mat { int r, c;原创 2015-11-09 20:31:09 · 651 阅读 · 0 评论 -
uva 1386 - Cellular Automaton(循环矩阵+矩阵快速幂)
题目链接:uva 1386 - Cellular Automaton题目大意:一个细胞自动机,有n个格子,每个格子的取值为0~m-1。给定距离d,每次操作后每个格子的值将变为到它距离不超过d的所有格子在操作之前的值之和除以m的余数。解题思路:矩阵快速幂,因为矩阵是循环矩阵,所以记录并处理第一行即可。#include #include #include using nam原创 2014-08-17 22:24:57 · 1260 阅读 · 0 评论 -
uva 10870 - Recurrences(矩阵快速幂)
题目链接:uva 10870 - Recurrences题目大意:考虑线性递推,给出递推方程,求f(n)%m.解题思路:矩阵快速幂。#include #include #include using namespace std;const int maxsize = 100;typedef long long ll;typedef long long type;原创 2014-08-17 22:17:56 · 930 阅读 · 0 评论 -
uva 10229 - Modular Fibonacci(矩阵快速幂)
题目链接:uva 10229 - Modular Fibonacci题目大意:给出n和m,求出f(n) %m, f(x)为斐波那契数列。解题思路:因为n的范围在0~214783647,所以计算量比较大,所以用矩阵快速幂。{(1, 1), (1, 0)} ^ n *(f[1], f[0]) = (f[n], f[n - 1]).#include #inc原创 2013-10-30 14:58:35 · 2826 阅读 · 0 评论 -
uva 10006 Carmichael Numbers(快速幂)
题目链接:uva 10006 Carmichael Numbers题目大意:判断一个数是否为Carmichael数, (素数原创 2013-10-19 23:33:03 · 1331 阅读 · 0 评论 -
fzu 1911 Construct a Matrix(矩阵快速幂+规律)
题目链接:fzu 1911 Construct a Matrix题目大意:给出n和m,f[i]为斐波那契数列,s[i]为斐波那契数列前i项的和。r = s[n] % m。构造一个r * r的矩阵,只能使用-1、0、1。使得矩阵的每行每列的和都不相同,输出方案,不行的话输出No。解题思路:求r的话用矩阵快速幂求,每次模掉m,{ {1, 1, 0}, {1, 0, 0},原创 2013-12-04 23:24:20 · 1810 阅读 · 0 评论 -
Codeforces 385E Bear in the Field(矩阵快速幂)
题目链接:Codeforces 385E Bear in the Field题目大意:有一片n*n的草莓地,每个位置的初始草莓量为横坐标和纵坐标的和,然后每过一秒增长一个草莓。然后给出熊的初始位置(sx,sy),以及移动的速度(dx,dy),每一秒发生的事:(1)速度增加k(k为该位置的草莓数);(2)熊的位置发生移动;(3)每个位置上草莓数+1解题思路:矩阵快速幂,根据题原创 2014-01-30 11:38:39 · 2267 阅读 · 0 评论 -
Codeforces 392C Yet Another Number Sequence(矩阵快速幂)
题目链接:Codeforces 392C Yet Another Number Sequence题目大意:给出n和k,表示一个序列A[i],求前n项A[i]的和,结果可以% 1e9+7。A[i] = i^k * F[i],F[i] = F[i-1] + F[i-2](斐波那契数列)。解题思路:首先(i+1)^k = C(k,k) * i ^ k + C(k, k-1)原创 2014-02-20 22:14:10 · 2252 阅读 · 0 评论 -
uva 11029 - Leading and Trailing(快速幂)
题目链接:uva 11029 - Leading and Trailing题目大意:给出一个n和k求n^k的前三位数和后三位数。解题思路:后三为数可以用分治的方法(快速幂)去做,可是前三位数就比较麻烦了,看了别人的题解.n^k = 10 ^ (k * log10(n)),所以可以将多余的位数移到小数点后面然后舍弃掉,只保留前三位,pow(10, 2 + fmod(k *原创 2013-10-26 08:02:43 · 1871 阅读 · 0 评论 -
hdu 4565 So Easy!(矩阵快速幂)
题目链接:hdu 4565 So Easy!题目大意:计算题目中所给式子的值。解题思路:矩阵快速幂。An = (a+√b)^n, Bn = (a-√b)^n, Cn = An + Bn = (a+√b)^n+(a-√b)^n;因为说An和Bn共轭,展开式可以互相抵消,所以保证说Cn一定是整数。(a-1)^2 -> a-1 -> 0 ->原创 2014-04-09 23:17:33 · 1209 阅读 · 0 评论 -
uva 11609 - Teams(组合数学+快速幂)
题目链接:uva 11609 - Teams题目大意:给出n,表示说有n个人,标好1~n,现在选若干人组成一队,并且选出一个队长,问说可以选多少种队伍,队长,人数,成员不同均算不同的队伍。解题思路:枚举人数为1、2....n的情况,那么就有1*C(n,1)+2*C(n,2)+3*C(n,3)+4*C(n,4) .....n*C(n,n),然后从中提取出n,每一项前的系数原创 2014-04-10 20:46:57 · 1340 阅读 · 0 评论 -
bnu 34895 Elegant String(矩阵快速幂)
题目链接:bnu 34895 Elegant String题目大意:给定n和k,表示有一个长度为n的序列,序列中的元素由0~k组成,问说有多少个串满足不包含0~k的全排列。解题思路:矩阵快速幂,根据dp[i][j]表示说第i为有j个相同,写出递推式,根据递推式求出矩阵。#include #include typedef long long ll;const ll MOD原创 2014-06-25 20:39:10 · 1039 阅读 · 0 评论 -
uva 11885 - Number of Battlefields(矩阵快速幂)
题目连接:uva 11885 - Number of Battlefields题目大意:给出周长p,问多少种形状的周长为p的,并且该图形的最小包围矩阵的周长也是p,不包括矩形。解题思路:矩阵快速幂,如果包含矩形的话,对应的则是斐波那契数列的偶数项,所以对应减去矩形的个数即可。#include #include typedef long long ll;const l原创 2014-06-30 23:34:01 · 1702 阅读 · 1 评论 -
uva 10743 - Blocks on Blocks(矩阵快速幂)
题目链接:uva 10743 - Blocks on Blocks题目大意:问说n联骨牌有多少种,旋转镜像后相同不算同一组,一行的格子必须连续,如果答案大于10000,输出后四位。解题思路:想了一下午的递推式,实在受不了,把推出的序列在网上搜了一下,有公式ai=5∗ai−1−7∗ai−2+4∗ai−3 (i≥5)PS:哪位神人知道怎么推出来的请留言我,大恩不言谢~#原创 2014-08-02 10:33:36 · 1397 阅读 · 0 评论 -
hdu 4965 Fast Matrix Calculation(矩阵快速幂)
题目链接;hdu 4965 Fast Matrix Calculation题目大意:给定两个矩阵A,B,分别为N*K和K*N;矩阵C = A*B矩阵M=CN∗N将矩阵M中的所有元素取模6,得到新矩阵M‘计算矩阵M’中所有元素的和解题思路:因为矩阵C为N*N的矩阵,N最大为1000,就算用快速幂也超时,但是因为C = A*B, 所以CN∗N=ABAB…AB=AC′N∗N−1B原创 2014-08-19 23:19:08 · 1033 阅读 · 0 评论 -
hdu 4990 Reading comprehension(矩阵快速幂)
题目链接:hdu 4990 Reading comprehension题目大意:给定n和m,按照题目代码求出答案。解题思路:f(n) = f(n-1) * 4 + 1, 转换成矩阵快速幂。#include #include #include using namespace std;typedef long long ll;int N, M;struct M原创 2014-09-10 10:48:50 · 754 阅读 · 0 评论 -
hdu 5564 Clarke and digits(矩阵快速幂)
题目链接:hdu 5564 Clarke and digits解题思路(i,j)表示该位为i并且取模7为j的种数。根据k构造一个70*70的矩阵代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 75;const原创 2015-11-16 18:13:02 · 1198 阅读 · 0 评论