随笔分类 - 线性代数 矩阵
摘要:【题意】n个点等距排列在长度为n-1的直线上,初始点1~k都有一辆公车,每辆公车都需要一些停靠点,每个点至多只能被一辆公车停靠,且每辆公车相邻两个停靠点的距离至多为p,所有公车最后会停在n-k+1~n。给定n,k,p,求满足要求的方案数%30031。n<=10^9,k<=p<=10。 【算法】状压D
阅读全文
摘要:【题意】从第0层开始有无穷层,每层有n个房间,给定矩阵A,A[i][j]表示从第x层的房间 i 可以跳到第x+A[i][j]层的房间 j (x任意),A[i][j]=0表示不能跳。初始在第0层第1个房间,求最少跳几次可以到达>=m层。n<=100,m<=10^18。 【算法】矩阵快速幂 【题解】我的
阅读全文
摘要:【题意】给定n个点的有向带边权图,求0到n-1长度恰好为T的路径数。n<=10,T<=10^9,边权1<=wi<=9。 【算法】矩阵快速幂 【题解】这道题的边权全部为1时,有简化版:【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑 这道题边权很小,将点x拆成9个点x1~
阅读全文
摘要:【题意】给定n和m,求1~n从高位到低位连接%m的结果。n=11时,ans=1234567891011%m。n<=10^18,m<=10^9。 【算法】递推+矩阵快速幂 【题解】 考虑枚举位数个数k,对于不同的k单独递推,设f[i]表示1~i的答案,则有: $$f_n=f_{n-1}*10^k+i$
阅读全文
摘要:【题意】给定n个禁忌字符串和字符集大小alphabet,保证所有字符在集合内。一个字符串的禁忌伤害定义为分割能匹配到最多的禁忌字符串数量(一个可以匹配多次),求由字符集构成的长度为Len的字符串的期望禁忌伤害。n<=5,1<=alphabet<=26,len<=10^9。 【算法】AC自动机+期望+
阅读全文
摘要:【题意】给定n个原串和m个禁忌串,要求用原串集合能拼出的不含禁忌串且长度为L的串的数量。(60%)n,m<=50,L<=100。(40%)原串长度为1或2,L<=10^18。 【算法】AC自动机+DP+矩阵快速幂 【题解】其实题意的数据范围不太清晰,反正开200个点就足够了。 因为要匹配禁忌串,所以
阅读全文
摘要:【题意】给定n个点m边的无向图,求A到B恰好经过t条边的路径数,路径须满足每条边都和前一条边不同。n<=20,m<=60,t<=2^30。 【算法】矩阵快速幂 【题解】将图的邻接矩阵进行矩阵快速幂就可以得到恰好经过t条边的路径数,但不能满足题目要求。 改为对原图的边进行相互连边,将经过同一个点的边两
阅读全文
摘要:【题意】数列满足an=an-1+an-2,n>=3。现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个。10^18。 【算法】数论(扩欧)+矩阵快速幂 【题解】定义fib(i)表示第 i 个斐波那契数,将数列an列项观察容易发现ak=a1*fib(k-2)+a2*fib(k-1)
阅读全文
摘要:【题目】D. Flights for Regular Customers 【题意】给定n个点m条边的有向图,每条边有di表示在经过该边前必须先经过di条边,边可重复经过,求1到n的最小经过边数。n,m<=150,di<=10^9,time=4s。 【算法】floyd+矩阵快速幂 【题解】需要计算步数
阅读全文
摘要:【题意】给定m条边的无向图,起点s,终点t,要求找出s到t恰好经过n条边的最短路径。n<=10^6,m<=100。 【算法】floyd+矩阵快速幂 【题解】 先对点离散化,得到点数N。 对初始边建立初始矩阵,然后考虑每次多跑一条边相当于一次矩阵乘法,即c[i][j]=min(a[i][k],a[k]
阅读全文
摘要:【题意】给定h,w,d,要求构造矩阵h*w满足任意两个曼哈顿距离为d的点都不同色,染四色。 【算法】结论+矩阵变换 【题解】 曼哈顿距离是一个立着的正方形,不方便处理。d=|xi-xj|+|yi-yj| 将矩阵旋转45°,转为切比雪夫距离(正方形)。d=max{|xi-xj|,|yi-yj|} (图
阅读全文
摘要:【算法】二分+矩阵快速幂 【题意】给定矩阵A和整数k,MOD,求A^0+A^1+A^2+...+A^k。 【题解】 定义题目要求的答案为f(n),即: $$f_n=\sum_{i=0}^{n}A^i$$ 当n为偶数时,可以拆成两半,后一半由前一半集体乘A(n/2)得到,即: $$f_n=f_{\fr
阅读全文
摘要:【算法】简单数学 【题解】 对于A*B=C C中第i行第j列的数字由A中第i行和B中的j列的数字各自相乘后相加得到。 所以两个矩阵能相乘要求A的列数等于B的行数,复杂度为O(n3)。 #include<cstdio> #include<algorithm> #include<cstring> usi
阅读全文
摘要:【算法】矩阵快速幂 【题解】T*A(n-1)=A(n)矩阵如下: a 1 * x(n-1) 0 = xn 0 0 1 c 0 c 0 防止溢出可以用类似快速幂的快速乘。 #include<cstdio> #include<algorithm> #define ll long long using n
阅读全文
摘要:【算法】矩阵快速幂 【题解】 根据f[n]=f[n-1]+f[n-2],可以构造递推矩阵: $$\begin{vmatrix}1 & 1\\ 1 & 0\end{vmatrix} \times \begin{vmatrix}f_n \\ f_{n-1} \end{vmatrix}=\begin{vm
阅读全文
摘要:【数论】数论——onion_cyc 【计数问题】计数问题(排列组合,容斥原理,卡特兰数)——onion_cyc 【概率与期望】链接 【链与反链】链接 【生成树计数(矩阵树定理)】专题链接 【快速幂】 原理:将指数化为二进制再分为若干个数相乘。 每次自己乘自己相当于平方,增加二进制权。 int qui
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文