随笔分类 - 数学 - 矩阵乘法
摘要:假如说每次只能跳一步,一共跳 $i$ 步到达 $(i,x)$ 的方案数是好求的: $f[i][j]=\sum_{k=1}^{n} f[i-1][k] \times w(k,j)$. 时间复杂度为 $O(Ln^2)$. $ans_{t}=\sum_{i=0}^{L} f_{L,y} \times \b
        阅读全文
                
摘要:比较简单的一道题. 矩阵乘法,唯一需要注意的地方就是这道题需要维护前缀和. 那么我们就多增加一个变量 $g$,表示前缀和,然后在设置矩阵的时候将 $g$ 要乘的一列中的元素都设置成前缀和即可. 做这种题的时候可以先打一个暴力来测试一下边界什么的,然后再去用矩阵乘法来优化. code: #includ
        阅读全文
                
摘要:朴素的矩阵乘法时间复杂度会爆炸,但是我们发现矩阵乘法的形式是一个 $(1 \times n) \times (n \times n)$ 的形式. 所以如果提前预处理出来 $(n \times n)$ 矩阵的 $2^i$ 次幂,然后每次询问的时候二进制拆分,复杂度就是 $O(n^2 \log 1e9)
        阅读全文
                
摘要:这个状压状态时显然的,但是总状态数有 $\binom{K}{P}$. 好在题目中有一个要求,就是每个格子必须经过一次,所以说我们压缩的长度为 $P$ 的状态中首位必为 1. 那么状态数就减小为 $\binom{K-1}{P-1}$,来一个矩阵乘法就行了. code: #include <cstdio
        阅读全文
                
摘要:神仙 DP. 可以求解 $1$ 号点的答案 $val(1)=w$. 假设所选的 $S$ 集合包含 $w$,那么答案一定为 $1$. 令叶子节点个数为 $m$,则有 $2^{m-1}$ 个集合的答案为 $1$. 假设当前修改代价为 $i$,想让根节点的答案改变. 最优改变方式有两种:1.将小于 $w$
        阅读全文
                
摘要:题意:有 $n$ 种牌,每种牌有 $C$ 张. 有两种方法能组成一叠: - $(i,i+1,i+2)$ - $(i,i,i)$ 一副牌是合法的,当且仅当这副牌能被分成若干叠. 给出牌的种类数 $n$ 以及每种的张数 $C$,和每种牌必选的个数.(如果该牌必选 $k$ 张,则有 $C-k$ 张是可选可
        阅读全文
                
摘要:这道题真考验一个人的数学感知啊..... 看到 $\frac{b- \sqrt d}{2}$ 的形式就要想到这是一个一元二次方程的一个根之一,然后去解. 想到这一步的话就好做了,因为我们可以列一个关于 $n$ 的递推式,然后矩阵乘法加速即可. 代码就不贴了....
        阅读全文
                
摘要:code: #include <cstdio> #include <cstring> #include <algorithm> #define M 185 #define N 10000008 #define ll long long #define setIO(s) freopen(s".in",
        阅读全文
                
摘要:如果单点而不是求 sigma 的话还是比较好办的. 遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算. 这样的话可以使的最后算出的是前缀和相加的形式. code: #include <bits/stdc++.h> #define ll long long #define
        阅读全文
                
摘要:自己 yy 了一个动态 dp 做法,应该是全网唯一用 LCT 写的. code: #include <bits/stdc++.h> #define ll long long #define lson tr[x].ch[0] #define rson tr[x].ch[1] #define setIO
        阅读全文
                
摘要:现在看来这道题真的不难啊~ 正着求不好求,那就反着求:答案=总-全不是质数 这里有一个细节要特判:1不是质数,所以在算全不是质数的时候要特判1 code:
        阅读全文
                
摘要:Code: #include <bits/stdc++.h> #define N 50001 #define ll long long #define lson now<<1 #define rson now<<1|1 #define inf 1000000000 #define setIO(s) 
        阅读全文
                
摘要:把之前写的版本改了一下,这个版本的更好理解一些. 特地在一个链的最底端特判了一下. code: #include <bits/stdc++.h> #define N 200005 #define ll long long #define inf 10000000005 #define lson p[
        阅读全文
                
摘要:这道题还比较友好~首先,构建出来 $AC$ 自动机,那么我们要求的就是从 $0$ 号点走无限次走到一个终止节点的概率. 考虑构建转移矩阵 $M,$ $M_{i,j}$ 表示节点 $i$ 转移到节点 $j$ 的概率. 如果 $i$ 不是终止节点,则直接将概率相加即可,否则,只有 $M_{i,i}$ 为
        阅读全文
                
摘要:有两个操作: 将 $[l,r]$所有数 + $x$ 求 $\sum_{i=l}^{r}fib(i)$ 将 $[l,r]$所有数 + $x$ 求 $\sum_{i=l}^{r}fib(i)$ $n=m=10^5$ 直接求不好求,改成矩阵乘法的形式: $a_{i}=M^x\times fib_{1}$直
        阅读全文
                
摘要:%%%cxhscst2's blog Codeforces 576D Flights for Regular Customers(矩阵加速DP) 代码非常优美 + 简洁,学习到了 Code:
        阅读全文
                
摘要:Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999。 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', 'D'。现在他要求蒟蒻yts1999构造一个新的字符串S,构造的方法是:进行多次操作,每一次操作选
        阅读全文
                
摘要:求 $f[i][j]=∑f[i−1][k]$,$'a'<=k<='z'$ . 用矩阵乘法转移一波即可. 竟然独自想出来了QAQ Code:
        阅读全文
                
摘要:Code:
        阅读全文
                

 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号