news 2026/5/25 5:21:09

P15729 [JAG 2024 Summer Camp #2] Add Add Add 题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P15729 [JAG 2024 Summer Camp #2] Add Add Add 题解

P15729 [JAG 2024 Summer Camp #2] Add Add Add

Link: https://www.luogu.com.cn/problem/P15729

题目描述

给定两个长度为N NN的正整数序列( A 1 , A 2 , … , A N ) (A_1, A_2, \ldots, A_N)(A1,A2,,AN)( B 1 , B 2 , … , B N ) (B_1, B_2, \ldots, B_N)(B1,B2,,BN)。对于k = 2 , 3 , … , 2 N k = 2, 3, \ldots, 2Nk=2,3,,2N,计算∑ i + j ≤ k ( A i + B j ) \sum_{i+j \leq k} (A_i + B_j)i+jk(Ai+Bj)的值,即对所有满足i + j ≤ k i + j \leq ki+jk1 ≤ i , j ≤ N 1 \leq i, j \leq N1i,jN的下标对( i , j ) (i, j)(i,j)( A i + B j ) (A_i + B_j)(Ai+Bj)的和。

输入格式

输入以如下格式给出:

N A 1 A 2 … A N B 1 B 2 … B N \begin{aligned} &N \\ &A_1 \ A_2 \ \ldots \ A_N \\ &B_1 \ B_2 \ \ldots \ B_N \end{aligned}NA1A2ANB1B2BN

  • 1 ≤ N ≤ 200 , 000 1 \leq N \leq 200,0001N200,000
  • 1 ≤ A i , B i ≤ 10 6 1 \leq A_i, B_i \leq 10^61Ai,Bi1061 ≤ i ≤ N 1 \leq i \leq N1iN
  • 所有输入值均为整数。

输出格式

输出2 N − 1 2N - 12N1行。在第i ii行(1 ≤ i ≤ 2 N − 1 1 \leq i \leq 2N - 11i2N1)输出当k = i + 1 k = i + 1k=i+1时的答案。

输入输出样例 #1

输入 #1

3 1 1 1 1 1 1

输出 #1

2 6 12 16 18

输入输出样例 #2

输入 #2

5 3 7 1 8 3 7 10 5 3 4

输出 #2

10 37 70 114 165 206 230 248 255

输入输出样例 #3

输入 #3

1 3 5

输出 #3

8

Solution

1. 题意

给定两个长度为n nn的正整数序列{ A n } \{A_n\}{An}{ B n } \{B_n\}{Bn}。对于k = 2 , 3 , … , 2 n k = 2, 3, \ldots, 2nk=2,3,,2n,计算∑ i + j ≤ k ( A i + B j ) \sum_{i+j \leq k} (A_i + B_j)i+jk(Ai+Bj)的值。

2. 分析

不妨设函数

f ( k ) = ∑ i + j ≤ k ( A i + B j ) f(k) = \sum_{i+j \leq k} (A_i + B_j)f(k)=i+jk(Ai+Bj)

则很容易发现

f ( k + 1 ) = f ( k ) + ∑ i + j = k + 1 ( A i + B j ) = f ( k ) + ∑ i = 1 k + 1 ( A i + B k + 1 − i ) = f ( k ) + ∑ i = 1 k A i + ∑ i = 1 k B i \begin{aligned} f(k+1) &= f(k) + \sum_{i+j = k+1} (A_i + B_j) \\&= f(k) + \sum_{i=1}^{k+1}(A_i+B_{k+1-i}) \\&= f(k) + \sum_{i=1}^{k}A_i + \sum_{i=1}^{k}B_i \end{aligned}f(k+1)=f(k)+i+j=k+1(Ai+Bj)=f(k)+i=1k+1(Ai+Bk+1i)=f(k)+i=1kAi+i=1kBi

从上面的和式容易发现,f ( k + 1 ) f(k+1)f(k+1)等于f ( k ) f(k)f(k)加上两个数组的前k kk项和,而前缀和本身可以通过一边输入一边计算储存。如此一来:

  • 输入阶段O ( n ) O(n)O(n)复杂度求出两个数组的前缀和(常数是2 22);
  • 然后继续O ( n ) O(n)O(n)复杂度求出f ( 1 ) , f ( 2 ) ⋯ f ( k ) f(1),f(2) \cdots f(k)f(1),f(2)f(k)并输出。

总体的时间复杂度还是O ( n ) O(n)O(n)

换句话说,f ( k ) f(k)f(k)就是前缀和的前缀和,整个求解过程可以理解为“半打表”。

3. 代码

usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Text;publicclassP15729{constintmaxn=200010;staticlong[]a=newlong[maxn];staticlong[]b=newlong[maxn];publicstaticvoidMain(string[]args){Scannercin=newScanner();StreamWritercout=newStreamWriter(Console.OpenStandardOutput()){AutoFlush=false};longn;stringnInput=cin.Next();if(string.IsNullOrEmpty(nInput))return;n=long.Parse(nInput);for(longi=1;i<=n;i++){stringval=cin.Next();if(val!=null){a[i]=long.Parse(val);a[i]+=a[i-1];}}for(longi=1;i<=n;i++){stringval=cin.Next();if(val!=null){b[i]=long.Parse(val);b[i]+=b[i-1];}}longsum=0;for(longk=2;k<=2*n;k++){longm=Math.Min(k-1,n);sum+=a[m]-a[k-m-1];sum+=b[m]-b[k-m-1];cout.Write(sum);cout.Write("\n");}cout.Flush();cout.Close();}}publicclassScanner{privateStreamReaderreader;privatestring[]tokens;privateintpointer;publicScanner(){reader=newStreamReader(Console.OpenStandardInput());}publicstringNext(){while(tokens==null||pointer>=tokens.Length){stringline=reader.ReadLine();if(line==null)returnnull;tokens=line.Split(new[]{' ','\t','\n','\r'},StringSplitOptions.RemoveEmptyEntries);pointer=0;}returntokens[pointer++];}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 5:11:09

工厂适合做跨境独立站吗?5个判断标准

工厂适合做跨境独立站吗&#xff1f;5个判断标准对很多制造企业来说&#xff0c;跨境电商独立站确实是一条值得认真考虑的出海路径。但它并不适合所有工厂一上来就重投入。要不要做独立站&#xff0c;关键不在于“别人都在做”&#xff0c;而在于产品是否适合、预算是否可控、团…

作者头像 李华
网站建设 2026/5/25 5:09:50

Python 类型注解:从入门到日常实用

Python 是一门动态类型语言&#xff0c;这让它足够灵活&#xff0c;但也让大型项目维护起来容易踩坑。类型注解&#xff08;Type Hints&#xff09;就是 Python 提供给我们的"安全带"——它不会改变代码的运行方式&#xff0c;但能显著提升代码的可读性和健壮性。1. …

作者头像 李华
网站建设 2026/5/25 5:09:36

MySQL安装与基础操作指南

本篇目标&#xff1a; 在Centos系统下安装MySQL 学会MySQL的一些基本操作 一.MySQL的安装 说明&#xff1a;安装中&#xff0c;用户切换成为超级用户root&#xff0c;初期练习&#xff0c;mysql不进行用户管理&#xff0c;全部使用root进行&#xff0c;尽快适应mysql语句&am…

作者头像 李华
网站建设 2026/5/25 5:05:23

分子动力学基准测试框架:加权集成采样与TICA评估ML模型性能

1. 项目概述与核心挑战在计算生物物理和药物发现领域&#xff0c;分子动力学模拟是我们理解蛋白质、核酸等生物大分子如何“动起来”的核心工具。简单来说&#xff0c;它就像一台超级计算机上的“分子摄像机”&#xff0c;通过求解物理定律&#xff0c;逐帧记录原子在势能面上的…

作者头像 李华