
【算法】矩阵乘法
文章平均质量分 87
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1009】【HNOI2008】GT考试
【题目链接】点击打开链接【思路要点】先用KMP(或者暴力)求出匹配了\(i\)位后出现一个字母\(c\),最大能匹配多少位。然后矩阵乘法优化DP即可。时间复杂度\(O(M^3LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXLOG 31#define MAXN 55template <typ...原创 2018-02-18 16:25:55 · 310 阅读 · 0 评论 -
【省内训练2019-06-05】序列计数
【思路要点】显然有矩阵乘法优化序列自动机 dpdpdp 的做法。考虑 AlAl+1…Ar=Al−1−1…A2−1A1−1A1A2…ArA_lA_{l+1}\dots A_r=A_{l-1}^{-1}\dots A_2^{-1}A_1^{-1}A_1A_{2}\dots A_rAlAl+1…Ar=Al−1−1…A2−1A1−1A1A2…Ar ,因此只需考虑计算矩阵的前缀右乘...原创 2019-06-10 12:24:22 · 195 阅读 · 0 评论 -
【省内训练2019-06-03】String
【思路要点】不难发现对于已知的字符串 SSS ,计算编辑距离可以直接贪心。因此,计算出矩阵 matmatmat ,其中 mati,jmat_{i,j}mati,j 表示 TTT 中未出现的最短的以 iii 开头, jjj 结尾的字符串的长度,用矩阵乘法即可计算编辑距离为 xxx 的最短串的长度。二分答案即可。关于矩阵 matmatmat 的计算可以采用在后缀自动机上 dpdpdp 的...原创 2019-06-06 15:30:33 · 215 阅读 · 0 评论 -
【省内训练2019-06-03】Graph
【思路要点】首先考虑 Type=0Type=0Type=0 的做法。矩阵 AiA^iAi 的 (x,y)(x,y)(x,y) 处的元素表示从 xxx 出发走 iii 步是否能够到达 yyy 。问题即为令 xxx 为一个足够大的数,找到最小的 ddd ,使得 Ax+d=AxA^{x+d}=A^xAx+d=Ax 。定义无向图 GGG 是 kkk 分图,当且仅当可以给其中每一个点 iii 拟...原创 2019-06-06 15:25:00 · 214 阅读 · 0 评论 -
【LOJ3058】「HNOI2019」白兔之舞
【题目链接】点击打开链接【思路要点】首先,求出 LLL 的任意原根 ggg ,以及其 kkk 次单位根 www 。记初始给定的矩阵为 matmatmat ,那么答案 anstans_tanst 应当满足anst=∑i=0L(Li)(mati)x,y[i%k=t]ans_t=\sum_{i=0}^{L}\binom{L}{i}(mat^i)_{x,y}[i\%k=t]anst...原创 2019-04-25 11:33:13 · 582 阅读 · 0 评论 -
【BZOJ3328】PYXFIB
【题目链接】点击打开链接【思路要点】注意到 ∑i=0N(Ni)xi=(x+1)N\sum_{i=0}^{N}\binom{N}{i}x^i=(x+1)^N∑i=0N(iN)xi=(x+1)N 且 Fi=(mati)1,1F_i=(mat^i)_{1,1}Fi=(mati)1,1 ,其中 mat={{0,1},{1,1}}mat=\{\{0,1\},\{1,1\}\}mat...原创 2019-04-25 15:29:57 · 282 阅读 · 0 评论 -
【LOJ3043】「ZJOI2019」线段树
【题目链接】点击打开链接【思路要点】不难发现题目要求计算所有操作集合的子集对应的 tagtagtag 数之和。分开考虑每个节点上 tagtagtag 的存在情况,我们希望设计一个能够转移的状态。一种可行的方式是在状态中记录 0/10/10/1 二元组 (self,ancestor)(self,ancestor)(self,ancestor) 分别表示节点本身及其任意祖先上是否...原创 2019-04-02 17:56:11 · 878 阅读 · 0 评论 -
【LOJ2263】「CTSC2017」游戏
【题目链接】点击打开链接【思路要点】仿照题目的第二问的解法,我们先来考虑本题的平方做法。令 BBB 表示事件 xi=1x_i=1xi=1 ; AAA 表示事件 xj=cx_j=cxj=c ,其中 jjj 是 iii 之前第一个确定的事件,若 iii 之前没有确定的事件,则 j=0j=0j=0 ; CCC 表示事件 xk=cx_k=cxk=c ,其中 kkk 是 iii 之...原创 2018-11-01 18:27:36 · 942 阅读 · 0 评论 -
【CodeForces】CodeForces Round #403 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Andryusha and Colored Balloons【思路要点】 显然答案有下界:Max{di+1}Max{di+1}Max\{d_i+1\},其中didid_i为点iii的度数。 我们用构造的方式来说明这个下界是可以取到的。 将度数最大的点作为根...原创 2018-08-07 20:51:15 · 425 阅读 · 0 评论 -
【LOJ2325】「清华集训 2017」小 Y 和恐怖的奴隶主
【题目链接】点击打开链接【思路要点】由于场上的每一个位置只有可能包含一个0,1,2或3血的奴隶主,因此本质不同的状态数只有\(\binom{11}{3}=165\)种,矩阵乘法+快速幂即可,询问时只需要矩阵乘向量。时间复杂度\(O(C^3LogN+TC^2LogN)\),其中\(C=165\)。上述做法可能会因为常数问题被卡到90~95分。考虑对于已知的\(M\)和\(K\),DP得到\(N≤2*...原创 2018-06-19 17:50:09 · 532 阅读 · 0 评论 -
【JSOI2017】预言
【思路要点】定义矩阵的数异或,\(b\ xor\ A\)表示将\(A\)中的每一个数都异或上\(b\),由于本文不涉及矩阵的数乘,以下简写为\(bA\)。定义矩阵运算\(\otimes\),表示将矩阵乘法中的加法替换为异或,乘法替换为与得来的运算。定义矩阵乘幂\(A^b\),表示\(b\)个\(A\)用\(\otimes\)连接的结果,由于本文不涉及矩阵乘法,以下不加辨识地使用\(A^b\)的写法...原创 2018-06-20 19:41:20 · 728 阅读 · 0 评论 -
【BZOJ4180】字符串计数
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXC 4#define MAXLOG 63const long long INF = 1.5e18;template <typename T> void re...原创 2018-05-20 13:43:10 · 390 阅读 · 0 评论 -
【BZOJ4851】【JSOI2016】位运算
【题目链接】点击打开链接【思路要点】问题要求所有数互不相同,不妨规定\(A_1<A_2<...<A_N\)。按照数位DP的思路,从高位向低位DP,记录一个\(N\)位的二进制状态,其中第\(i(i<N)\)位表示到目前为止\(A_i\)是否等于\(A_{i+1}\),第\(N\)位表示到目前为止\(A_N\)是否等于\(R\)。转移时枚举当前位所有数的取值。这个DP在0和1...原创 2018-04-12 14:54:26 · 687 阅读 · 0 评论 -
【BZOJ4204】取球游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1005#define MAXLOG 32int n, m, K;double f[2][MAXN], matrix[MAXLOG][MAXN][MAXN];int main() { scanf("%...原创 2018-03-20 20:02:53 · 261 阅读 · 0 评论 -
【BZOJ4870】【SHOI2017】组合数问题
【题目链接】点击打开链接【思路要点】原问题可等价于在\(Nk\)个物品中选出\(pk+r(p\in Z)\)个的方案数。矩阵乘法即可,时间复杂度\(O(k^3LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXLOG = 63;const int MAXN = 55;template <t...原创 2018-03-23 15:12:19 · 347 阅读 · 0 评论 -
【BZOJ3243】【UOJ121】【NOI2013】向量内积
【题目链接】BZOJUOJ【思路要点】首先我们来考虑\(k=2\)的情况。将所有向量拼成一个\(N\)行\(D\)列的矩阵\(A\),那么问题等价于找到\(A*A^{T}\)中的一个不在主对角线上的0,或者判断不存在这样的0。显然,直接计算\(A*A^{T}\)会超时。注意到如果找不到这样的零,\(A*A^{T}\)不在主对角线上的元素应该都是1,设矩阵\(B\)是一个\(N\)行\(N\)列的矩...原创 2018-03-02 12:53:14 · 378 阅读 · 0 评论 -
【BZOJ3240】【UOJ124】【NOI2013】矩阵游戏
【题目链接】BZOJUOJ【思路要点】直观地来想,本题可以用矩阵乘法优化递推来实现。但是进制转换并不方便,所以,我们考虑不记录一个方阵的\(2^i\)次方,转而记录一个方阵的\(10^i\)次方,这样就不需要进制转换了。时间复杂度\(O(|N|+|M|)\),由于常数很大,实现时可能需要一定的常数优化。【代码】#include<bits/stdc++.h>using namespac...原创 2018-03-08 12:55:53 · 331 阅读 · 1 评论 -
【2019 江苏省队集训】Day2 解题报告
【T1】 朝夕相处【思路要点】记不考虑旋转同构的答案为 G(N)G(N)G(N),答案为F(N)F(N)F(N),由BurnsideBurnsideBurnside引理,有F(N)=∑i∣NG(i)φ(Ni)NF(N)=\frac{\sum_{i\mid N}G(i)\varphi(\frac{N}{i})}{N}F(N)=N∑i∣NG(i)φ(iN)剩余问题在于计算 G(N)G(...原创 2019-07-03 13:30:13 · 991 阅读 · 0 评论