【总结】不同卷积如何来搞
【总结】不同卷积如何来搞
md老子又tmd卷积构造错调一天,我来向smy && 高哥学习,总结一下不同的形式如何卷积
-
等号
-
和为定值
-
从0到上界全遍历
\[a_i=\sum_{j=0}^i b_j c_{i-j} \]最简单的形式,也是最基础的形式
-
\(j\in[l,r]\cap [0,i]\)
此时由于\(j\)有这样的限制,也就是意思是\(b[]\)只有\([l,r]\)有值,令其他b[i]=0即可,没什么难的
-
-
差为定值
- 全遍历\[\]\[\]\[\]\[\]
\[ a'_i=\sum_{j\le i} b'_j c_{i-j} \]考虑实现,相当于`std::reverse(b,b+n+1)`和`std::reverse(a,a+n+1)`。 注意到我们`reverse`的东西和上下界,a得到的范围和b`reverse`的范围是一样的。
-
\(j\in[l,r]\cap [0,i]\)
同理
- 全遍历
-
-
同余号
道理都是一样的,可以看做是时刻维护长度\(< \mod {}\)的数组。
博客保留所有权利,谢绝学步园、码迷等不在文首明显处显著标明转载来源的任何个人或组织进行转载!其他文明转载授权且欢迎!