【前缀和与差分 C/C++】洛谷 P8218 求区间和

news/2025/3/11 3:18:43/

2025 - 03 - 09 - 第 72 篇
Author: 郑龙浩 / 仟濹
【前缀和与差分 C/C++】

文章目录

  • 洛谷 P8218 求区间和
    • 题目描述
    • 输入格式
    • 输出格式
    • 输入输出样例 #1
      • 输入 #1
      • 输出 #1
    • 说明/提示
    • 思路
    • 代码

洛谷 P8218 求区间和

题目描述

给定 n n n 个正整数组成的数列 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1,a2,,an m m m 个区间 [ l i , r i ] [l_i,r_i] [li,ri],分别求这 m m m 个区间的区间和。

对于所有测试数据, n , m ≤ 1 0 5 , a i ≤ 1 0 4 n,m\le10^5,a_i\le 10^4 n,m105,ai104

输入格式

第一行,为一个正整数 n n n

第二行,为 n n n 个正整数 a 1 , a 2 , ⋯ , a n a_1,a_2, \cdots ,a_n a1,a2,,an

第三行,为一个正整数 m m m

接下来 m m m 行,每行为两个正整数 l i , r i l_i,r_i li,ri ,满足 1 ≤ l i ≤ r i ≤ n 1\le l_i\le r_i\le n 1lirin

输出格式

m m m 行。

i i i 行为第 i i i 组答案的询问。

输入输出样例 #1

输入 #1

4
4 3 2 1
2
1 4
2 3

输出 #1

10
5

说明/提示

样例解释:第 1 1 1 到第 4 4 4 个数加起来和为 10 10 10。第 2 2 2 个数到第 3 3 3 个数加起来和为 5 5 5

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

对于 100 % 100 \% 100% 的数据: 1 ≤ n , m ≤ 1 0 5 1 \le n, m\le 10^5 1n,m105 1 ≤ a i ≤ 1 0 4 1 \le a_i\le 10^4 1ai104

思路

典型的的一维前缀和做法,不做具体的描述了。

我已将常规的一维前缀和笔记详细记录,具体内容可见我的博客,如下

一维前缀和算法
https://blog.csdn.net/m0_60605989/article/details/146117026?fromshare=blogdetail&sharetype=blogdetail&sharerId=146117026&sharerefer=PC&sharesource=m0_60605989&sharefrom=from_link

代码

// 洛谷P8218求区间和
// Author: 郑龙浩 / 仟濹
// Time: 2025-03-09
// 这道题是一个明显的一维前缀和
#include <bits/stdc++.h>
using namespace std;
// 列表
vector <int> arr;
// 前缀和数组
vector <int> sum;
int num, m;
// 计算区间和的函数 - 利用前缀和
int get_sum(int left, int right){int ans;// 注意判断,如果left是0,0-1 == -1,没有这个下标,不合法,应该特判if (left == 0)  return sum[right];// 正常套用公式即可ans = sum[right] - sum[left - 1];return ans;
}
int main( void ){cin >> num;arr.resize(num); // 设置 arr 原数列大小sum.resize(num); // 设置 sum 前缀和 大小// 输入数列for (int i = 0; i < num; i ++)cin >> arr[i];cin >> m;// 计算前缀和sum[0] = arr[0];for(int i = 1; i < num; i ++){sum[i] = sum[i - 1] + arr[i];}int left, right;// 输入 m 个区间,边输入边运算for (int i = 0; i < m; i ++){cin >> left >> right; // 输入的是第几个,而不是下标left -= 1; // 变为下标right -= 1; // 变为下标cout << get_sum(left, right) << endl;}return 0;
}

http://www.ppmy.cn/news/1578241.html

相关文章

AI日报 - 2025年3月10日

AI日报 - 2025年3月10日 &#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | Anthropic CEO预测强AI最早2026年到来 &#x1f52c; SAGE框架提升问答质量61.25%&#xff0c;Reflexion框架将GPT-4成功率提至91% ▎&#x1f4bc; 商业动向 | xA…

护照阅读器在旅游景区流程中的应用

在旅游景区的日常运营与管理中&#xff0c;为游客提供便捷、高效且安全的游览体验至关重要。护照阅读器作为先进的身份识别设备&#xff0c;在景区的自助购票、行李寄存以及自助安检等关键环节发挥着重要作用&#xff0c;极大地优化了景区的运营流程&#xff0c;提升了游客的满…

docker已创建容器设置自启动

在Docker中&#xff0c;你可以通过几种方式来设置容器在启动时自动运行。以下是几种常见的方法&#xff1a; 1. 使用docker run命令的--restart选项 当你使用docker run命令创建容器时&#xff0c;可以使用--restart选项来指定容器的重启策略。例如&#xff0c;如果你想让容器…

thinkphp5.1 在fetch模版就超时

场景 当被渲染模版不存在&#xff0c;请求不响应任何内容&#xff0c;过一会就timeout 排查过程 使用xdebug,追踪代码&#xff0c;发现走到D:\temporary_files\m40285_mini\40285_mini\thinkphp\library\think\exception\Handle.php&#xff0c;进入死循环&#xff0c;一直…

django中路由配置规则的详细说明

在 Django 中,路由配置是将 URL 映射到视图函数或类视图的关键步骤,它决定了用户请求的 URL 会触发哪个视图进行处理。以下将详细介绍 Django 中路由配置的规则、高级使用方法以及多个应用配置的规则。 基本路由配置规则 1. 项目级路由配置 在 Django 项目中,根路由配置文…

Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)

文章目录 前言一、基本功能介绍 1.1本章功能效果预览图: 二、可执行源码 2.1 yaml基础配置2.2 MybatisAnalyzeSQLInterceptor实现SQL拦截 前言 SQL性能监控是一个程序必要的功能&#xff0c;通常我们可以使用数据库自带的客户端工具进行SQL性能分析。然而对于一些专业度不高…

【新人系列】Golang 入门(三):条件循环

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12898955.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Golang 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

mysql,docker一键创建以及链接报错:Public Key Retrieval is not allowed

创建&#xff1a; docker run --name mysql-test -e MYSQL_ROOT_PASSWORD123 -d -p 13306:3306 mysql:8.0.39 docker exec -it mysql-test /bin/bash mysql -u root -p 报错&#xff1a;Public Key Retrieval is not allowed