news 2026/5/1 6:28:32

每日算法练习Day04

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每日算法练习Day04

B3612 【深进1.例1】求区间和

题目来源:https://www.luogu.com.cn/problem/B3612#ide

题目描述

给定nnn个正整数组成的数列a1,a2,⋯ ,ana_1, a_2, \cdots, a_na1,a2,,anmmm个区间[li,ri][l_i,r_i][li,ri],分别求这mmm个区间的区间和。

输入格式

第一行包含一个正整数nnn,表示序列的长度。

第二行包含nnn个正整数a1,a2,⋯ ,ana_1,a_2, \cdots ,a_na1,a2,,an

第三行包含一个正整数mmm,表示区间的数量。

接下来mmm行,每行包含两个正整数li,ril_i,r_ili,ri,满足1≤li≤ri≤n1\le l_i\le r_i\le n1lirin

输出格式

mmm行,其中第iii行包含一个正整数,表示第iii组答案的询问。

输入输出样例 #1

输入 #1

4 4 3 2 1 2 1 4 2 3

输出 #1

10 5

说明/提示

样例解释

111到第444个数加起来和为101010。第222个数到第333个数加起来和为555

数据范围

对于50%50 \%50%的数据:n,m≤1000n,m\le 1000n,m1000

对于100%100 \%100%的数据:1≤n,m≤1051 \le n, m\le 10^51n,m1051≤ai≤1041 \le a_i\le 10^41ai104

题解

importjava.util.Scanner;// 1. 导入扫描器类,用于读取控制台输入publicclassMain{// 2. 定义主类,Java程序入口,类名需和文件名一致publicstaticvoidmain(String[]args){// 3. 主方法,程序执行的入口Scannersc=newScanner(System.in);// 4. 创建Scanner对象,关联控制台输入流intn=sc.nextInt();// 5. 读取第一个整数n:表示原数组的元素个数// 6. 定义原数组a和前缀和数组s,长度n+1(索引0闲置,1~n存数据,和C++1-based索引一致)int[]a=newint[n+1];int[]s=newint[n+1];// 7. 循环读取n个元素,构建原数组a + 前缀和数组s(核心预处理)for(inti=1;i<=n;i++){a[i]=sc.nextInt();// 8. 读取第i个整数,存入原数组a的第i位s[i]=s[i-1]+a[i];// 9. 前缀和核心公式:s[i] = 前i个元素的累加和}intm=sc.nextInt();// 10. 读取整数m:表示后续的区间和查询次数// 11. 循环处理m次查询,每次O(1)时间出结果for(inti=1;i<=m;i++){intl=sc.nextInt();// 12. 读取查询的左边界lintr=sc.nextInt();// 13. 读取查询的右边界r// 14. 区间和核心计算:[l,r]的和 = 前r项和 - 前l-1项和,直接打印结果System.out.println(s[r]-s[l-1]);}sc.close();// 15. 关闭Scanner,释放输入流资源}}

这个是关于前缀和的问题,先设置好前缀和的数组,然后通过for循环来得到每一个前缀和,得到一个前缀和数组。
然后读取输入的l和r,通过循环可以获得多组l和r的相减的结果。然后输出就可以了。
要注意到边界条件,l不能小于1

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 10:04:27

【自选股】【持仓股】

这是一个股票交易类App的自选股与持仓股界面&#xff0c;我为你做一个详细的拆解和解读&#xff1a; &#x1f539; 顶部区域自选股 这是你添加到“自选”列表的所有股票的整体表现&#xff0c;今日整体跌幅为 -2.14%。绿色数字代表下跌&#xff0c;说明你关注的这批股票今天整…

作者头像 李华
网站建设 2026/4/25 12:14:10

3.24 Helm Chart开发实战:自定义Chart模板与依赖管理最佳实践

3.24 Helm Chart开发实战:自定义Chart模板与依赖管理最佳实践 引言 开发高质量的Helm Chart需要掌握模板编写、依赖管理、测试等技能。本文将详细介绍Helm Chart开发的最佳实践,帮助你创建可复用、易维护的Chart。 一、Chart开发流程 1.1 创建Chart helm create mychart…

作者头像 李华
网站建设 2026/5/1 5:47:06

高频面试题:Java死锁问题如何解决?

大家好&#xff0c;我是锋哥。今天分享关于【高频面试题&#xff1a;Java死锁问题如何解决?】面试题。希望对大家有帮助&#xff1b;高频面试题&#xff1a;Java死锁问题如何解决?死锁产生的四个必要条件&#xff08;缺一不可&#xff09;互斥&#xff08;Mutual Exclusion&a…

作者头像 李华
网站建设 2026/4/23 12:50:38

ThreadLocal 实现线程隔离的数据传递

在 Java Web 项目开发中&#xff0c;我们经常会遇到一个问题&#xff1a;一次 HTTP 请求的处理流程会跨越 Controller、Service、Mapper 等多个层级&#xff0c;若需要在这些层级间传递通用数据&#xff08;比如当前登录用户 ID&#xff09;&#xff0c;层层显式传参不仅代码繁…

作者头像 李华
网站建设 2026/5/1 5:44:07

基于 AOP + 反射实现公共字段自动填充

在 Java 项目的数据库操作中&#xff0c;我们总会遇到这样的重复场景&#xff1a;新增数据时要手动设置createTime、createUser、updateTime、updateUser&#xff0c;修改数据时又要重复设置updateTime、updateUser。这些机械的代码遍布各个 Service 层&#xff0c;不仅让代码臃…

作者头像 李华