快速幂/矩阵快速幂
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
Robot HDU - 4576
点击打开链接概率DP裸题 n*m暴力可过 见代码一但是存在优化的方法 可以发现w很小 也就是步数的种类很小 又因为只要各种步子迈的次数一样 最后到达每个点的概率都是一样的 就像1-2和-2+1结果一样是一个道理 所以对步数排序 每种步子分别处理在暴力DP的过程中 有如下转移式子 dp[cur^1][(i-w+n)%n]+=0.5*dp[cur][i]; dp[cur^1][(i+w)%...原创 2018-03-04 21:10:09 · 281 阅读 · 0 评论 -
Colossal Fibonacci Numbers! UVA - 11582
https://cn.vjudge.net/problem/UVA-11582要求斐波那契的第a^b项模n是多少 a和b都是ull的范围 但是n很小 极有可能存在循环节暴力打表 果然n从1到1000的循环节都在1e3级别 pre[n]记为n对应的循环节 这样将a^b对pre[n]取模 然后暴力求第(a^b)%pre[n]项即可#include <bits/stdc+...原创 2019-04-17 16:02:58 · 152 阅读 · 0 评论 -
浮波那契 51Nod - 1358
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1358看了题解才想到。。f(n)=f(n-1)+(fn-3.4) => g(n)=g(n-10)+g(n-34) g(10*n)=f(n)要求f(n)等价于求g(10*n) g(i)=1 1<=i<=40#include <bit...原创 2018-10-01 10:09:04 · 187 阅读 · 0 评论 -
233 Matrix HDU - 5015
http://acm.hdu.edu.cn/showproblem.php?pid=5015行数很小 可以想到快速幂a[i][j]=a[i][j-1]+a[i-1][j]=a[i][j-1]+a[i-1][j-1]+a[i-2][j-1]=a[i][j-1]+a[i-1][j-1]+...+a[1][j-1]+a[0][j]这样就找出第j列和第(j-1)列的递推关系 构造矩阵(n=5)...原创 2018-09-07 08:26:33 · 162 阅读 · 0 评论 -
Reading comprehension HDU - 4990
http://acm.hdu.edu.cn/showproblem.php?pid=4990遇事不决先打表打完前几项发现奇数项满足 a[2*n+1]=4*a[2*n-1]+1 直接矩阵快速幂偶数就求相邻奇数项 再乘二#include <bits/stdc++.h>using namespace std;#define ll long longll mat[5]...原创 2018-09-11 19:17:17 · 138 阅读 · 0 评论 -
Fast Matrix Calculation HDU - 4965
http://acm.hdu.edu.cn/showproblem.php?pid=4965(A*B)^(n*n)=A * ( (B*A)^(n*n-1) ) * B#include <bits/stdc++.h>using namespace std;const int mod=6;int a[1010][10],b[10][1010],c[10][10],ans[...原创 2018-09-11 18:28:55 · 137 阅读 · 0 评论 -
Plant CodeForces - 185A
点击打开链接我们设 第n个三角形中 上三角形数量为an 下三角形数量为bn不难找出这样的递推关系 an = 3*an-1 + bn-1 , bn = an-1 + 3*bn-1而找规律的题一般可用矩阵快速幂解决 试着凑出这样一个式子| 3 1 | * | an-1 0 | = | 3*an-1 + bn-1 0 | ==> | an 0 | = ( | 3 1 | ^ n ...原创 2017-10-06 16:22:30 · 245 阅读 · 0 评论 -
纪念SlingShot FZU - 1683
点击打开链接推出公式就好办了 直接上图吧。。还有 题目要求前(n+1)项的和 要用到二分 详见代码 #include <stdio.h>#include <cstring>#include <algorithm>using namespace std;#define ll long long#define M 2009int gg...原创 2017-11-20 15:10:14 · 288 阅读 · 0 评论 -
Recurrences UVA - 10870
点击打开链接主要就是公式推导 还是直接上图其实这种题靠自己推出公式来还是蛮爽的。。#include <bits/stdc++.h>using namespace std;int gg[20][20],mat[20][20],ans[20][20];int f[20],a[20];int d,n,m;void init(){ int sum,i,j;...原创 2017-11-20 16:13:54 · 219 阅读 · 0 评论 -
Recursive sequence HDU - 5950
点击打开链接这题是学长給讲的 关键就是要将n^4进行二项式展开具体过程推导详见学长博客点击打开链接至于为什么要将n^4展开 我的理解是 为了利用二项式展开建立一个递推关系因为n^4是无法直接用n^3来表示的 而进行二项式展开后 (n-1)^4可以用(n-2)^4,(n-2)^3,(n-2)^2,(n-2)^1,(n-2)^0来表示 而(n-1)^3,(n-1)^2同理都可以找到递推...原创 2017-11-21 22:05:22 · 175 阅读 · 0 评论 -
Xn数列 CODEVS - 1281
点击打开链接矩阵构造没啥说的a c0 1主要是用到了快速积来解决 (p*q)%m 可能会爆long long的问题 这样就不用高精度了 但仅限于有取模运算时快速积就是把快速幂的乘换成加即可 #include <bits/stdc++.h>using namespace std;#define ll long longll m,a,c,x0,n,g;...原创 2017-11-28 15:49:23 · 181 阅读 · 0 评论 -
Arc of Dream HDU - 4686
http://acm.hdu.edu.cn/showproblem.php?pid=4686将ai与bi相乘即可得aibi得递推式子 这里让求前n项和 其实就是求递推矩阵的前n项和 若已知前n/2项和 在乘某个矩阵即可得后n/2项和 二分一下即可#include <cstdio>#include <cstring>#include <algorit...原创 2019-05-06 19:33:51 · 148 阅读 · 0 评论