
矩阵乘法
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
BZOJ3329 Xorequ - 结论题 - 数位dp - 矩阵乘法
传送门 题目大意:请自行参考。 题解:首先这个式子等价于x^2x=3x,由于异或是不进位加法,不进位还想等了只能说明没有进位进而可以推知等价于x的二进制中没有相邻的1. 因此第一问二进制拆分后做数位dp即可。第二问随便列一列式子就可以矩乘了。 代码: #include #include #include #include #define mod 1000000007 #define li原创 2017-07-16 20:31:08 · 419 阅读 · 0 评论 -
Elephant - 平衡树 - 矩阵乘法
题目大意:设FM(k)F_M(k)FM(k)表示一张M个点的无向完全图从1走k步回到自己的方案数。给定序列{an}\{a_n\}{an},支持:区间加,区间翻转,区间求FM(ai)F_M(a_i)FM(ai)的gcd\gcdgcd。其中M是固定的(输入的常数)。 题解:通过观察发现gcd(FM(k1),FM(k2))=FM(gcd(k1−1,k2−1)+1)\gcd \left(F_...原创 2019-04-03 07:35:25 · 317 阅读 · 0 评论 -
「2017 山东一轮集训 Day6」子序列 - dp - 矩阵乘法
题目大意:给一个只包含前9个字符的字符串,q次询问区间本质不同的子序列数。n,q≤105n,q\le10^5n,q≤105。 题解: 考虑dp,设dp[i,j]表示前i个数字以j结尾的方案数。假设当前的是数字是c,那么: dp(i,c)=1+∑kdp(i−1,k),else dp(i,j)=dp(i−1,j)dp(i,c)=1+\sum_{k}dp(i-1,k),\mathrm{else...原创 2018-12-09 11:22:46 · 697 阅读 · 0 评论 -
「2017 山东一轮集训 Day4」塔 - dp - 矩阵乘法
题目大意: 现在有一条 [1,l][1, l][1,l] 的数轴,要在上面造 nnn 座塔,每座塔的坐标要两两不同,且为整点。塔有编号,且每座塔都有高度,对于编号为 iii 座塔,其高度为 iii。对于一座塔,需要满足它与前面以及后面的塔的距离大于等于自身高度(不存在则没有限制)。问有多少建造方案。答案对 mmm 取模。塔不要求按编号为顺序建造。 题解: 考虑给你一个排列怎么算有多少种放法,显然令...原创 2018-12-08 18:50:26 · 568 阅读 · 0 评论 -
bzoj 4162 shlw loves matrix II - 行列式 - 矩阵乘法 - 高斯消元
题目大意: 给一个nn的矩阵A,求其k次方。n≤50,k≤210000n\le50,k\le2^{10000}n≤50,k≤210000。 题解: 考虑将AkA^kAk视为某个数列的第k项hkh_khk(严格意义上是矩阵列?) 尝试改造hhh的递推式。 考虑:F(x)=∣A−xI∣F(x)=|A-xI|F(x)=∣A−xI∣即A减去若干倍的单位矩阵求行列式。 以33的矩阵为例,它张这个样子: F...原创 2018-12-08 15:50:07 · 356 阅读 · 0 评论 -
路途 - 矩阵乘法
题目大意:给一张图,多次询问两点间长度在[L,R]的路径数。n≤100,q≤100,R−L≤200n\le100,q\le100,R-L\le200n≤100,q≤100,R−L≤200 题解: 答案是∑i=LRGi\sum_{i=L}^R G^i∑i=LRGi,你显然可以跑一个矩乘套矩乘之类的东西。 暴力是O(qn3(lgn+R−L))O(qn^3(\lg n+R-L))O(qn3(lgn+...原创 2018-11-04 14:01:19 · 226 阅读 · 0 评论 -
bzoj 4712 洪水 - 动态dp - 树剖 - 线段树 - 矩阵乘法
动态dp入门题,转移有结合律可以写成矩阵的形式,特判叶子。 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #define gc getchar() #define lint long long #de...原创 2018-08-21 12:37:29 · 341 阅读 · 0 评论 -
AGC 003 F. Fraction of Fractal - dp - 矩乘
没啥好说的,大家翻LCA的blog吧,里面定义ud和lr打反了,其余是对的。 最主要的就是根据C=V-E这个事情。 LCA #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; #define rep(i,a,b) for(int i=原创 2018-08-16 15:43:55 · 297 阅读 · 0 评论 -
[学习笔记] bzoj 3328 PYXFIB - 单位根反演
首先求出一个原根g,那么单位根w取g(p−1)/k)g(p−1)/k)g^{(p-1)/k)} 性质是这样的:w^n的0次到k-1次相加取平均数为1,当且仅当k整除n。 构造多项式F(x)=(I+xM)nF(x)=(I+xM)nF(x)=(I+xM)^n,I是单位矩阵,M是Fib数列的转移矩阵,那么其k次项系数显然就是(nk)(nk)\binom n k 。这样做完了。 #include...原创 2018-07-29 11:42:46 · 601 阅读 · 0 评论 -
Water Sequence Problem By liuzhangfeiabc - 线段树 - 矩阵乘法
题目大意:给你两个序列A和B,维护A/B的区间加,区间A=B和A+=B和B=A和B+=A,以及求区间和 题解:发现这是个线性变换,用线段树维护矩阵即可,略卡常; // luogu-judger-enable-o2 // luogu-judger-enable-o2 // luogu-judger-enable-o2 #include<iostream> #include<...原创 2018-05-24 08:44:17 · 351 阅读 · 0 评论 -
chess 一个多项式插值维护dp的好题
题目大意:给你一个n*m的棋盘,你需要把一些格子染成黑色,使得有恰好k个黑色联通块,对998244353取模,n≤3,k,m≤5e4n≤3,k,m≤5e4n\le3,k, m\le5e4。 题解:考虑dp,dp[i][j][S]表示第i列,第i列的黑格子集合是S并且有j个联通块(注意当n=3的时候第一、三行同是黑格子的时候有是否联通两种情况),这样|S|&lt;=9(事实上有几种状态相同可以去掉...原创 2018-04-27 17:31:24 · 316 阅读 · 0 评论 -
BZOJ1409 Password - 矩阵乘法 - 快速幂 - 欧拉定理
传送门 题解:由于pq互质所以要求f[n]mod phi(q)。然后f[n]用矩乘计算即可。然后快速幂即可。 及说此题卡常需要先预处理出一些质数。 #include #include #include #define MAXV 5 #define MAXP 1000000 #define lint long long #define debug(x) cerr<<x #define sp <原创 2017-08-02 20:15:57 · 581 阅读 · 1 评论 -
[HNOI2008]BZOJ1009 GT考试 - 动态规划 - 矩阵乘法 - KMP
传送门 题解: 首先一开始并没有意识到这个题根KMP有9毛钱关系,只是以为如果设状态为: f[i][j]表示当前考虑到第i位,且有j位是B的前缀,那么如果下一位是B的j+1位那么就可以转移到f[i+1][j+1],否则转移到f[i+1][0]。 后来发现我真是个智障。 f[i][j]的j能转移到哪里,计算类似于KMP算法,我们枚举第j+1位是什么转移,转移到哪就在矩阵上+1。 要特判一原创 2017-07-16 20:30:43 · 418 阅读 · 0 评论 -
[SCOI2009]BZOJ1297 迷路 - 矩阵乘法
传送门 题目大意:自行参考。 题解:如果边权都是1那么这个题是傻逼题,邻接矩阵自乘若干次即可。 显然可以每条边拆点但是复杂度不对。 考虑把时间花在路上(也就是对边拆点)等价于一个单位时间到达,但是“为了进入这个点”又花费了边权-1的时间。 因此对每个点i拆点,拆成10个,对于第i个点拆出来的第j个记作P(i,j),到达P(i,1)才算到i这个点; 边(i,j,k)改为(P(i,1)原创 2017-07-16 20:31:28 · 408 阅读 · 0 评论 -
道路 - 矩阵乘法 - 倍增
题目大意:给定一张图GGG,求∑i=1kiTGi,T,∣G∣≤100,k≤109\sum_{i=1}^ki^TG^i,T,|G|\le100,k\le10^9∑i=1kiTGi,T,∣G∣≤100,k≤109 题解: 一些显然的做法是把那个幂次拆成斯特林数然后就是要求从路径上再选出若干条不同的边的方案数,这个就可以直接拿来倍增做到O(n^5lgk)了。 考虑直接对这个倍增: ST(k)=∑i=1...原创 2019-05-02 20:21:41 · 808 阅读 · 0 评论