ZT Blog
algorithm

前缀和与数学运算符号

准高一考完中考又来打竞赛了,服了,好消息是可以去北大附中本部训练

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

P5686 [CSP-S2019 江西] 和积和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

[CSP-S2019 江西] 和积和

题目描述

给定两个下标从11nn编号的序列ai,bia_i,b_i,定义函数S(l,r)(1lrn)S(l,r)(1\le l\le r\le n)为:

i=lrai×i=lrbi\sum_{i=l}^r a_i\times \sum_{i=l}^r b_i

请你求出下列式子的值:

l=1nr=lnS(l,r)\sum_{l=1}^n \sum_{r=l}^n S(l,r)

由于答案可能很大,你只需要给出答案模109+710^9+7后的结果。

输入格式

第一行一个正整数nn表示序列长度。

第二行nn个正整数表示aia_i

第三行nn个正整数表示bib_i

输出格式

仅一行一个整数表示答案模109+710^9+7后的结果。

样例 #1

样例输入 #1

3

2 3 4

3 4 5

样例输出 #1

244

样例 #2

样例输入 #2

5

11 22 33 44 55

12 34 56 78 90

样例输出 #2

201542

提示

【数据范围】

对于20%20\%的数据:n10n\le 10,ai,bi10a_i,b_i\le 10

对于40%40\%的数据:n200n\le 200,ai,bi100a_i,b_i\le 100

对于70%70\%的数据:n3000n\le 3000,ai,bi105a_i,b_i\le 10^5

对于100%100\%的数据:3n5×1053\le n\le 5\times 10^5,1ai,bi1091\le a_i,b_i\le 10^9

初三生看到这个慌了,但是别慌,看ai的解释

当然,我可以帮你解释这一段 LaTeX 代码:

suml=1nr=lnmax(a[l...r])sum_{l=1}^n\sum_{r=l}^n \max(a[l...r])

这是一个嵌套求和表达式,分为以下几部分:

1.外层求和l=1n\sum_{l=1}^n:表示对ll从 1 到nn进行求和。

2.内层求和r=ln\sum_{r=l}^n:在每个固定的ll值下,表示对rrllnn进行求和。

3.最大值函数max(a[l...r])\max(a[l...r]):表示在数组aa的子数组a[l]a[l]a[r]a[r]之间取最大值。

组合在一起,这个表达式的意思是:

对于数组aa中的所有可能的子数组a[l...r]a[l...r](其中1lrn1 \leq l \leq r \leq n),求这些子数组的最大值的和。

逐步解释如下:

  1. 选定左端点ll从 1 到nn

  2. 对于每个ll,选定右端点rrllnn

  3. 计算子数组a[l]a[l] a[r]a[r]的最大值。

  4. 将所有这些最大值相加。

总的来说,这个表达式代表的是将所有可能的子数组的最大值进行累加的结果。

前缀和与数学运算符号 - ZT Blog