BZOJ 2973 石头游戏 矩乘加速递推】的更多相关文章

FFFFFFF,看了一上午才看懂,又调了一中午.....我终于明白为何自己如此菜了qwq 这个题加速的思路是:因为每个序列的长度小于6,他们的lcm是60,所以六十次以后就会回到原来的序列. 加速的就是这一个个重复的60次 我们把60个转移矩阵乘起来(结合律),设为d,然后有x=t/60就是有多少个d,算出d的x次方(快速幂) 然后不足60次的一个个乘起来就好了 至于如何建转移矩阵...模拟一下吧(我搞了一上午qwq): e[k]是第k次的转移矩阵,取石子从0里面取(因此e[k][0][0]都是…
题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ 这 $10$ 个数字指明.操作序列是一个长度不超过 $6$ 且循环执行.每秒执行一个字符的字符串.每秒钟,所有格子同时执行各自操作序列里的下一个字符.序列中的每个字符是以下格式之一:数字 $0 \sim 9$:表示拿 $0 \sim 9$ 个石头到该格子.$NWSE$:表示把这个格子内所有的石头推…
题目传送门 题目大意:计算数列a的第n项,其中: \[a[1] = a[2] = a[3] = 1\] \[a[i] = a[i-3] + a[i - 1]\] \[(n ≤ 2 \times 10^9)\] 一般的递推是O(n)的,显然时间和空间都不能承受. 由于每一步递推都是相同的.这句话包含了2个层面:首先,递推式是相同的:其次,递推的条件也要是相同的.综合来说,每一步的递推都是相同的.这是应用矩阵加速递推的充分条件. 那么怎么进行矩阵加速呢?我们首先观察,第\(i\)项和哪些项有关? 与…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive sequences. In each turn, the cows would stand in a line, while John writes two positive numbers…
题目链接:传送门 题目大意: 求斐波那契数列第n项F(n). (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路: 用矩阵乘法加速递推. 算法竞赛进阶指南的模板: #include <iostream> #include <cstring> using namespace std; ; ], ][]) { ]; memset(c, , sizeof c); ; j < ; j++) { ; k < ; k++) { c[j] = (c[j] + 1…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 求方案数,想到DP: 因为两个站间距离<=p,所以每p个站中所有车一定都会停靠至少一次,借此设计状态为p个站的停靠状态: 状压一下,1表示有车,0表示没有车,每个状态只有k个1: 这样就可以转移了,后一个状态可以是前一个中的一辆车移动了过来,状态数+=前一个状态: 但这样没有规律,同一个状态中不同的1出现的顺序不同,会导致出现重复: 所以需要人为规定一个顺序,这里设计为p位中最后一位…
题意: 已知: 当x<10时:f(x)=x 否则:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + --+ a9 * f(x-10); 求:f(x)%m的值. 思路: 矩阵快速幂加速递推. 嗯嗯 // by SiriusRen #include <cstdio> #include <cstring> using namespace std; int cases,k,ans,a[10][10],mod; struct matrix…
题目描述 穿越了森林,前方有一座独木桥,连接着过往和未来(连接着上一题和下一题...). 这座桥无限长. 小 Q 在独木桥上彷徨了.他知道,他只剩下了 N 秒的时间,每一秒的时间里,他会向 左或向右移动一步. N 秒之后,小 Q 恰在桥上某一特定位置,且他每两次经过此位置的时间间隔不会超过 M 秒. 那么问题来了,这 N 秒的时间里,小 Q 的路线总共会有多少种可能的形式. 输入 文件第一行两个正整数 N.M,如题目所描述 输出 输出一个整数,表示可能的路线数量最终模 1000000007 的结…
题目链接: https://www.luogu.org/problemnew/show/P1707 分析: 洛谷的一道原创题,对于练习矩阵加速递推非常不错. 首先我们看一下递推式: \(a[k+2]=p*a[k+1]+q*a[k]+b[k+1]+c[k+1]+r*k^2+t*k+1;\) \(b[k+2]=u*b[k+1]+v*b[k]+a[k+1]+c[k+1]+w^k;\) \(c[k+2]=x*c[k+1]+y*c[k]+a[k+1]+b[k+1]+z^k+k+2;\) 有点吓人,我想在做…
题目链接:传送门 题目: 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (≤n,m≤) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数字指明. 操作序列是一个长度不超过6且循环执行.每秒执行一个字符的字符串.每秒钟,所有格子同时执行各自操作序列里的下一个字符.序列中的每个字符是以下格式之一: 数字0~:表示拿0~9个石头到该格子. NWSE:表示把这个格子内所有的石头推到相邻的格子,N表示上方,W表示左方,S表示下方,E表示右方.…