矩阵快速幂
文章平均质量分 93
luckyone2014
想思路是苦涩艰辛的,但是打代码是愉快的。
展开
-
hdu 1757 A Simple Math Problem
A Simple Math ProblemTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2458 Accepted Submission(s): 1425Problem DescriptionLele原创 2014-07-15 16:29:37 · 642 阅读 · 0 评论 -
LightOJ 1132 - Summing up Powers 矩阵快速幂+排列组合
题意:给n和k 计算那串公式的值。做法: 找出 1^k 怎么推到2^k 再推到n^k的方法,再开一维记录总的值,就ok了。初始矩阵1^ 0 1^1 1^2 1^3 .....1^k 总构造矩阵:C(0,0) C(0,1) C(0,2) C(0,3)...C(0,k-1) C(0,k) 00 C(1,1) C(1,2) C(1,3)...C(1,k-1) C(1,k) 0......0 0原创 2015-07-13 20:43:43 · 1045 阅读 · 0 评论 -
LightOJ 1070 - Algebraic Problem 矩阵快速幂
题意:给你p=a+b, q=ab算出 (a^n+b^)mod2^64做法:mod 2^64所以开 unsigned long long ,llu 就行了,达到上限会自动取模的。然后就是公式了。我是在推公式中找到的规律。a^2+b^2=(a+b)*(a+b)-2*a*ba^3+b^3=(a^2+b^2)*(a+b)-a*b(a+b)a^4+b^4=(a^3+b^3)*(a+b)-a*b(a^2+b^2)设G(n)=a^n+b^nG(n)=G(n-1)*p-G(G-2)*q然后就是快速幂了原创 2015-07-13 15:01:46 · 1162 阅读 · 0 评论 -
zoj 3497 Mistwald 矩阵快速幂
题意:给你一个n*m矩阵,每个点有四个方向可以走。室友说自己用p步走到了终点,问是一定还是可能,还是不可能。做法:把每个点化做一数,i行j列为(i*m+j)。 然后把每个点的转移写在构造矩阵中,比如第二个案例,就只用建一条边,0->1,所以mp.a[0][1]=1。如果到了终点,就不再走了,所以构造矩阵第一维不能是终点数字。然后p次快速幂,结果的第一行,为p步能到达的点。如果快速幂后,[0][n*m-1]不为1,那就是false。如果为1,判断第一行其他点是否为1,如果有为1的,那么他就是可能撒谎,原创 2015-04-18 20:03:12 · 723 阅读 · 0 评论 -
URAL 1507 Difficult Decision 矩阵快速幂
题意:输入A矩阵,求出的B矩阵是否有0,有的话NO,没有YES。做法:矩阵快速幂,先算出 K等于n(n-1)次的A矩阵。复杂度 是 log(n^2)*(n^3)=10^4 ,然后k循环加到 n(n+1),每次把矩阵再乘个A,然后加到B里。复杂度是 n*n^3=10^6。所以妥妥的。因为只在乎有没有0,输入只有正数,矩阵里也只有乘法和加法。所以我把非零数改成了1,然后乘法用状压位运算优化到n^2。跑得稍微快点。原创 2015-03-28 09:41:31 · 690 阅读 · 0 评论 -
URAL 1518 Jedi Riddle 3 矩阵快速幂
就是 那个加粗的公式 写成矩阵相乘就ok了。 轻松a。 矩阵快速幂100*100 大小的矩阵差不多极限了。原创 2015-02-12 10:18:10 · 573 阅读 · 0 评论 -
hdu 5015 233 Matrix 矩阵快速幂
构造矩阵就行了。具体看代码把,可以用print 把矩阵打出来看;不知道为什么G++能过,C++数组越界,路过大神求指点。原创 2014-09-14 20:14:15 · 958 阅读 · 0 评论 -
hdu 1009 233 Matrix 矩阵构造 --2014 ACM/ICPC Asia Regional Xi'an Online
题意,给你一个矩阵的行数n,求a[n][m],矩阵下标从0开始。 第二行给出的数是这个矩阵的第0列数字,从行下标1开始。 这个矩阵的第0行,a[0][1]=233 a[0][2]=2333 a[0][3]=23333; 然后这个矩阵从i=1,j=1开始 有a[i][j]= a[i-1][j]+a[i][j-1]这个性质。这题我没考虑n==0的情况,,所以数据要是严格点,我这代码就挂了。。原创 2014-09-14 19:41:55 · 1224 阅读 · 3 评论 -
hdu 4291 A Short problem 矩阵快速幂,找循环节
这题和以往的矩阵快速幂的题目不同在于g(g(g(n))) mod 109 + 7; 这个取模 是把最外层的g( ) 函数的 因变量改了. g()函数是比斐波那契函数的增长速度还要快的. 所以最外层g( ) 的自变量 g(g(n)) 是非常大的. 所以考虑找循环节.最外层的g()的因变量是要%1000000007的,而且g(0)=0,g(1)=1,所以可以通过下面的程序找到 g(g(n))的循环节是222222224.所以第二层的g()的因变量是要%222222224;而且它同样有g(0)=0,g(原创 2014-08-09 19:24:03 · 795 阅读 · 0 评论 -
hdu 5318 The Goddess Of The Moon 矩阵快速幂
题意:有n个小楼梯,如果两个楼梯的 前缀等于另一个的后缀就可以首尾相连,前缀后缀长度要大于等于2。 问m个楼梯组成,有多少种组成方法。做法:要去重,然后judge 每个楼梯能不能连,构造出构造矩阵,初始矩阵第一行全为1,然后矩阵快速幂。原创 2015-07-29 12:26:47 · 1339 阅读 · 0 评论