专栏文章

题解:P5686 [CSP-S2019 江西] 和积和

P5686题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqax4nm
此快照首次捕获于
2025/12/04 01:49
3 个月前
此快照最后确认于
2025/12/04 01:49
3 个月前
查看原文
注意到:
l=1nr=lni=lrj=lraibj=i=1nj=1nl=1min{i,j}r=max{i,j}naibj=i=1nj=1nmin{i,j}(nmax{i,j}+1)aibj=i=1n(ni+1)aij=1ijbj+i=1niaij=i+1n(nj+1)bj=i=1n(ni+1)aij=1ijbj+j=1n(nj+1)bji=1j1iai\begin{split} \sum_{l=1}^{n}\sum_{r=l}^{n}\sum_{i=l}^{r}\sum_{j=l}^{r}a_ib_j &= \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{l=1}^{\min\{i, j\}}\sum_{r=\max\{i, j\}}^{n}a_ib_j \\&= \sum_{i=1}^{n}\sum_{j=1}^{n}\min\{i, j\}(n - \max\{i, j\} + 1)a_ib_j \\&= \sum_{i=1}^{n}(n - i + 1)a_i\sum_{j=1}^{i}jb_j + \sum_{i=1}^{n}ia_i\sum_{j=i + 1}^{n}(n - j + 1)b_j \\&= \sum_{i=1}^{n}(n - i + 1)a_i\sum_{j=1}^{i}jb_j + \sum_{j=1}^{n}(n - j + 1)b_j\sum_{i=1}^{j - 1}ia_i \end{split}
迭代计算即可(下面的代码假设数组下标从 00n1n - 1):
CPP
int s = 0, t = 0;
for(int i = 0; i < n; ++i) {
  t = (t + ll(i + 1) * B[i]) % MOD;
  s = (s + ll(n - i) * A[i] % MOD * t) % MOD;
}
t = 0;
for(int i = 0; i < n; ++i) {
  s = (s + ll(n - i) * B[i] % MOD * t) % MOD;
  t = (t + ll(i + 1) * A[i]) % MOD;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...