
矩阵快速幂
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【THUPC2019】摆家具 / furniture(计数)(BSGS优化矩阵快速幂)
传送门题解:考虑一个序列 qqq 对询问 p,tp,tp,t 的贡献。容易想到我们需要求出进行 ttt 次操作后有 iii 个位置和原序列不同的方案数,列出来发现 ttt 转移到 t+1t+1t+1 的形式和 ttt 无关,可以矩阵乘法计算,由于询问有点多,可以考虑BSGS优化一下。然后需要计算的就是 dif[p][i]dif[p][i]dif[p][i] 表示和 ppp 有iii 个位...原创 2020-04-13 16:44:55 · 404 阅读 · 0 评论 -
【校内模拟】排列(状压DP)(矩阵快速幂)
简要题意:统计有多少个不同的 nnn 排列满足 ∣pi−i∣≤k|p_i-i|\leq k∣pi−i∣≤kk≤4k\leq 4k≤4题解:容易发现当前位置选择哪一个只会影响到后面 kkk 个位置。kkk 本身非常小,状压即可。容易发现转移和当前是第几位无关,只和状态有关,而且是线性,写成矩阵然后快速幂即可。代码:#include<bits/stdc++.h>#de...原创 2020-02-21 21:38:06 · 272 阅读 · 1 评论 -
【校内模拟】《名字很高端但是和OI半毛钱关系没有的题#1》(矩阵快速幂)(BSGS)
简要题意:汉诺塔,三个盘子成环,只允许将盘子挪到顺时针下一个,问把 aaa 柱上的所有盘子全部挪到 bbb 柱上至少需要几次操作,挪到 ccc 又要几次操作。设 ana_nan 表示把 nnn 个盘子全部挪到顺时针下一个位置的操作次数 ,bnb_nbn 同理,不过是挪到下下个位置。手玩可以发现递推式:an=2bn−1+1bn=2bn−1+2+an−1a_n=2b_{n-1}+1\\b...原创 2020-02-14 14:09:51 · 253 阅读 · 0 评论 -
【SNOI2019】纸牌(麻将DP)(矩阵快速幂)
传送门今年省选好多麻将DP。。。题解:说的是纸牌,但是写过麻将DP的都知道这是麻将DP的一个套路。以下把三张连着的牌叫做顺子,三张相同的牌叫做刻子。不允许同类型顺子出现超过两次,否则我们可以用三个刻子来换掉。实际上我们发现影响我们用多少张iii牌的只有前面的i−2,i−1i-2,i-1i−2,i−1开头的顺子有多少个。决定方案数不同的实际上是我们在当前状态下有多少空闲的刻子可以放。...原创 2019-10-16 21:59:03 · 483 阅读 · 0 评论 -
【清华集训2017】【LOJ2325】【洛谷P4007】小 Y 和恐怖的奴隶主(矩阵快速幂)
LOJ传送门洛谷传送门解析:显然mmm这么小不是拿来看看完事的。我们发现真正影响当前状态的只有每种血量的小怪的个数。打表m=3,K=8m=3,K=8m=3,K=8发现合法的情况只有165种。所以我们只需要给每个状态一个编号就可以把矩阵压到165165165了每种状态i,j,ki,j,ki,j,k(三种血量的分别有i,j,ki,j,ki,j,k个)对答案的贡献是P(i,j,k)/(i...原创 2019-04-04 20:07:50 · 237 阅读 · 0 评论 -
【BZOJ3328】PYXFIB (单位根反演)(矩阵快速幂)
传送门解析:显然我们要求的是:Ans=∑i=0n(ni)Fi[k∣i]Ans=\sum_{i=0}^n{n\choose i}F_i[k\mid i]Ans=i=0∑n(in)Fi[k∣i]我们考虑将FFF表示成矩阵的形式(以下用AAA表示该矩阵)。即我们求得答案矩阵后还原数据就行了。那么现在求:Ans=∑i=0n(ni)Ai[k∣i]Ans=\sum_{i=0}^{n}{n\c...原创 2019-07-02 13:34:47 · 217 阅读 · 0 评论 -
【HNOI2019】白兔之舞(单位根反演)(矩阵快速幂)(MTT)(循环卷积优化常数)
传送门题解:说个笑话,这道题很休闲的真正的好题,会让你算t等于所有情况的答案考虑走iii步的答案,显然就是Ai[x][y](Li)A^i[x][y]{L\choose i}Ai[x][y](iL),其中AiA^iAi表示原矩阵的iii次幂,其中[x][y][x][y][x][y]表示取矩阵中间的某个元素,(Li){L\choose i}(iL)是因为需要在中间选择iii个地方落脚。...原创 2019-09-03 22:05:16 · 253 阅读 · 0 评论 -
【LOJ573】「LibreOJ NOI Round #2」单枪匹马(矩阵乘法)
传送门题解:注意到分子分母每次无非就是交换位置然后分母加上分子的若干倍。把这个转移写成矩阵的形式,求个逆,维护一下矩阵和矩阵的逆的前缀积就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inline char gc...原创 2019-10-11 11:55:24 · 205 阅读 · 0 评论 -
2019.03.26【洛谷P5107】能量采集(BSGS加速矩阵乘法)
传送门解析:很显然,ttt轮之后点iii对点jjj产生贡献的比例是可以用矩阵乘法算出的。计算出转移矩阵之后只需要用一个1×n1\times n1×n的原始状态矩阵乘上去就行了,所以现在考虑怎么优化求出转移矩阵的时间复杂度。一种想法是二进制拆分,但是复杂度还有一个log\loglog感觉不是很卡得过去。。。另外一种想法就是利用BSGS。但是我们发现分n\sqrt nn块空间卡不过去...原创 2019-03-26 08:45:27 · 198 阅读 · 0 评论 -
2019.01.19【雅礼集训2019Day1T3】math(矩阵快速幂)
描述给出 n, m, x,你需要求出下列式子的值:∑∑i=1mki=n∏i=1msin(ki∗x)\sum_{\sum_{i=1}^{m}k_i=n}\prod_{i=1}^m\sin(k_i*x)∑i=1mki=n∑i=1∏msin(ki∗x)其中ki为正整数,由于答案非常大,你只需要输出答案(保证不为 0)的正负(如果是负数输出负号,否则输出正号)和从左往右第一个非 0 数位...原创 2019-01-19 13:53:29 · 291 阅读 · 0 评论 -
2018.09.27【BZOJ5221】偏题(矩阵快速幂)(数学推理)
【问题描述】斐波那契数列是一个经典递推数列,即Fibn=Fibn−1+Fibn−2Fib_n=Fib_{n-1}+Fib_{n-2}Fibn=Fibn−1+Fibn−2在这个问题中,定义一个新数列,对于n≥2n ≥ 2n≥2有Fn=Fn−1+Fn−2+3+Fn−1Fn−2F_n=F_{n-1}+F_{n-2}+\sqrt{3+F_{n-1}F_{n-2}}Fn=Fn−1+Fn−2+...原创 2018-09-27 16:22:58 · 246 阅读 · 0 评论 -
2018.09.28【HDU5564】Clarke and digits(数位DP)(矩阵快速幂)
传送门解析:哦,这可怕的数据范围。但是仔细想一想,只限制了位数的话,能不能给我们什么特殊性质思路:首先要知道动态规划暴力 做法。设dp[i][j][k]dp[i][j][k]dp[i][j][k]表示处理到第iii位,前iii位%7余数是jjj,当前位是kkk的方案数,于是状态转移就是dp[i+1][(j∗10+x)mod&nbsp;7][x]+=dp[i][j][k],1≤k,x≤...原创 2018-09-28 16:45:35 · 217 阅读 · 0 评论 -
2018.09.29【洛谷P2106】Sam数(数位DP)(矩阵快速幂)
传送门解析:其实这种只用位数转移的数位DPDPDP,大概都可以用矩阵快速幂推。本质原因是每层的转移方程与这是第几层无关,比如这道题。思路:可以发现一个很显然的情况,就是上面说的,这道题可以矩阵快速幂转移。不过还是要推一下普通状态转移式子才知道应该怎么构造矩阵。转移方程如下:dp[i+1][j]=∑x=max(j−2,0)min(0,j+2)dp[i][x]dp[i+1][j]=\sum...原创 2018-09-29 10:50:48 · 260 阅读 · 0 评论 -
2018.10.15【BZOJ4766】文艺计算姬(矩阵快速幂)(矩阵树)(prufer序列)(结论题)
传送门解析:显然可以用Matrix−TreeMatrix-TreeMatrix−Tree来做 推导。思路:我们直接建出基尔霍夫矩阵HHH,显然我们可以把它分成四块:左上角为AAA是一个n×nn\times nn×n的对角线为mmm的矩阵,其余为0。右上角为BBB是一个n×(m−1)n\times (m-1)n×(m−1)的全部为−1-1−1的矩阵左下角为CCC是一个(m−1)×n(...原创 2018-10-15 21:42:52 · 266 阅读 · 0 评论 -
2018.10.19【校内模拟】硬币(矩阵快速幂)
传送门解析:构造矩阵CtC_tCt表示构造出和为ttt的方案数,其中元素(i,j)(i,j)(i,j)表示选择最小的硬币是aia_iai,最大的硬币大于等于aja_jaj,构造出和为ttt的方案数。然后发现所有矩阵Ct+pC_{t+p}Ct+p都可以通过Ct×CpC_t\times C_pCt×Cp得到。并且不重不漏。那么直接预处理出所有的AviA_{v_i}Avi,然后...原创 2018-10-19 19:47:36 · 212 阅读 · 0 评论 -
2018.11.09【BZOJ1706】relays 奶牛接力跑(矩阵快速幂优化DP)
传送门解析:首先如果我们已经求出一个矩阵AiA_iAi表示走iii步两点之间的最短路,只要我们知道A1A_1A1,我们可以知道Ai+1A_{i+1}Ai+1 Ai+1,u,v=mink{Ai,u,k+A1,k,v}A_{i+1,u,v}=\min_k\{A_{i,u,k}+A_{1,k,v}\}Ai+1,u,v=kmin{Ai,u,k+A1,k,v}然后发现这个东西是满足结...原创 2018-11-09 15:45:57 · 192 阅读 · 0 评论 -
2018.11.08【CodeForces989】E. A Trance of Nightfall(矩阵快速幂)(倍增)
传送门解析:考场上本来想写倍增来着结果发现这个东西可以矩阵快速幂转移,所以倍增数组就用来优化矩阵快速幂了。。。(省去每次求出转移矩阵的一点常数)如果只有一次询问,我们只需要求出每个点在跑了mmm次后以及每条线在跑了mmm次后到达目标点的距离。这个显然只需要把每个点走m−1m-1m−1次的概率DPDPDP出来计算直线最大,因为直线需要走一步到点上面,然后把每个点走mmm次的概率求出来,所有点...原创 2018-11-08 15:20:03 · 279 阅读 · 1 评论 -
2018.01.02【CQOI2018】【BZOJ5298】【洛谷P4456】交错序列(矩阵快速幂)(轻微卡常)
BZOJ传送门洛谷传送门解析:本来还可以继续把矩阵乘法一分为八卡卡常数的,今天就算了,CQOI2018真的做的我没心情卡了。。。不知道出题人是哪根筋搭错了,5道版题还有两道卡常。。。我只能说,这届CQOI出题人的水平估计都没有选手高(此话不负任何法律或人身责任(滑稽)思路:考虑原来要求的式子:xaybx^ay^bxayb怎么化简。xayb=(n−x)ayb=∑i=0aCai(−1...原创 2019-01-02 16:48:41 · 258 阅读 · 0 评论