1 条题解

  • 0
    @ 2025-8-24 22:13:24

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 周子衡
    Shadow is the light!

    搬运于2025-08-24 22:13:24,当前版本为作者最后更新于2019-11-30 22:41:49,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    感觉现在这里的题解都比较啰嗦,写一个简单一点的数学推导……

    考虑O(n)O(n)枚举每个右端点rr。我们要求的式子即

    $ans_r=\sum_{l=1}^rS(l,r)=\sum_{l=1}^rS(l,r)=\sum_{l=1}^r(\sum_{i=l}^ra_i\times \sum_{i=l}^rb_i)$

    sumai=j=1iai,sumbi=j=1ibisuma_i=\sum_{j=1}^ia_i,sumb_i=\sum_{j=1}^ib_i,即ai,bia_i,b_i的前缀和,特别地,记suma0=sumb0=0suma_0=sumb_0=0,则

    $ans_r=\sum_{l=1}^r(suma_r-suma_{l-1})(sumb_r-sumb_{l-1})$

    $\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }=\sum_{l=1}^r(suma_rsumb_r-suma_{l-1}sumb_r-suma_{r}sumb_{l-1}+suma_{l-1}sumb_{l-1})$

    $\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }\text{ }=r\times suma_rsumb_r-sumb_r\sum_{l=0}^{r-1}suma_l-suma_r\sum_{l=0}^{r-1}sumb_l+\sum_{l=0}^{r-1}suma_lsumb_l$

    扫描的时候可以用三个变量分别记录sumal,sumbl,sumal×sumblsuma_l,sumb_l,suma_l\times sumb_l的和,套入上式直接计算即可,再更新变量的值。

    最后输出r=1nansr\sum_{r=1}^nans_r即可。

    总时间复杂度O(n)O(n)

    • 1

    信息

    ID
    4698
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者