Educational Codeforces Round 102

倒序开的题,十分钟想出G,然后写了一个多小时
分别经历了\(O(n^4),O(n^3),O(nVlogV),O(n^2logn)\)...

G

\(f_i\)为目前在第\(i\)点的答案
如果中间经历一段长度为\(len_1\)的,块增加序列(就是序列\(\{a\}\)在干的事)
\(g_i\)表示经历完后第\(i\)点的答案

那么我们有\(g_i=\sum\limits_{j\le i}f_j{len_1\choose i-j}\)

如果中间经历一段长度为\(len_2\)的,块减少序列(就是序列\(\{b\}\)在干的事)
\(h_i\)表示经历完后第\(i\)点的答案

那么我们有\(h_i=\sum\limits_{j\ge i}g_j{len2\choose j-i}\)

\[\begin{aligned} h_i&=\sum\limits_{j\ge i}g_j{len_2\choose j-i}\\ &=\sum\limits_{j\ge i}{len_2\choose j-i}\sum\limits_{k\le j}f_k{len_1\choose j-k}\\ &=\sum\limits_{k}f_k\sum\limits_{j\ge i,j\ge k}{len_1\choose j-k}{len_2\choose j-i}\\ &=\sum\limits_{k}f_k {len_1+len_2\choose j-i+k}\\ \end{aligned}\]

显然后面这个是个卷积形式
直接卷过不去,因为\(len_1+len_2\)\(O(10^5)\)级别的
由于题目中\(|a_i-b_i|\le 5\)的条件
\(h_i\)的这个\(i\)下标的是\(O(n)\)级别的,所以右边保留\(O(n)\)项即可

时间复杂度\(O(n^2logn)\)

posted @ 2021-01-15 14:40  Grice  阅读(182)  评论(0编辑  收藏  举报