一道十分有趣的题。
一眼推式子,发现自己不会。
看了题解,发现是有趣思维题。但是由于我的朋友学习了有趣的思维题做法,因此我决定学习更有趣的生成函数做法!!!
考虑把原式拆开,
\[\frac{1}{2}\times \left( \sum_{i=1}^{n}\sum_{j=1}^{n} \binom{a_i+a_j+b_i+b_j}{a_i+a_j}- \sum_{i=1}^{n}\binom{2a_i+2b_i}{2a_i} \right)
\]
后半部分显然可以快速计算,考虑如何计算前半部分。
\[\sum_{i=1}^{n}\sum_{j=1}^{n} \binom{a_i+a_j+b_i+b_j}{a_i+a_j}
\]
设 \(t_i=a_i+b_i\) ,使用生成函数可得:
\[[x^{a_i+a_j}]\sum_{i=1}^{n}\sum_{j=1}^{n} (1+x)^{t_i+t_j}
\]
把 \(x^{a_i+a_j}\) 除掉,变成
\[[x^0]\sum_{i=1}^{n}\sum_{j=1}^{n} x^{-a_i-a_j}(1+x)^{t_i+t_j}
\]
发现此时变为了自己卷自己,变成平方形式:
\[[x^0] \left( \sum_{i=1}^{n} x^{-a_i}(1+x)^{t_i} \right )^2
\]
枚举 \(t_i\) ,设 \(Q_i=\sum_{t_i=i}x^{-a_i}\),变形为:
\[[x^0] \left( \sum_{i=1}^{m} Q_i(1+x)^{i} \right )^2
\]
平方中间的式子可以用秦九韶算法快速计算,卷积直接暴力算。
总时间复杂度 \(O(n+m^2)\),其中 \(m\) 为 \(t_i\) 的值域