[C++][CSP][GESP][前缀和] 加油站2

思路:

1.利用前缀和数组s保存每个加油站与1号加油站的距离

什么是前缀和?

前缀和数组s[i]是原数组a中前i个数的累加

例如:s[3]=a[1]+a[2]+a[3]

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int n,a[100005],q;//n:加油站的数量 a:原数组,代表每个加油站与下个加油站的距离 q:q次查询
long long s[100005];//s:前缀和数组,代表每个加油站与1号加油站的距离
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];//求出前缀和数组
	}
	cin>>q;
	for(int i=1;i<=q;i++){
		long long l,r,a,b;
		cin>>l>>r;
		a=s[r-1]-s[l-1];//利用前缀和数组求出l号加油站到r号加油站的距离
		b=s[n]-a;//由于这是一个环形,所以还有逆时针的情况
		if(a<b)//求出a(顺时针)和b(逆时针)中的最短距离
		    cout << a << endl;
		else
		    cout << b << endl;
	}
	return 0;
}
相关推荐
uhakadotcom10 分钟前
人工智能如何改变医疗行业:简单易懂的基础介绍与实用案例
算法·面试·github
吴_知遇1 小时前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
LaoWaiHang1 小时前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc
山北雨夜漫步1 小时前
机器学习 Day14 XGboost(极端梯度提升树)算法
人工智能·算法·机器学习
到底怎么取名字不会重复1 小时前
Day10——LeetCode15&560
c++·算法·leetcode·哈希算法·散列表
chuxinweihui2 小时前
数据结构——二叉树,堆
c语言·开发语言·数据结构·学习·算法·链表
freexyn2 小时前
Matlab自学笔记五十一:(推荐)输入参数的数量和可变数量的输入
笔记·算法·matlab
陈大大陈2 小时前
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
java·linux·开发语言·数据结构·c++·算法·缓存
纪元A梦2 小时前
华为OD机试真题——通过软盘拷贝文件(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
看到我,请让我去学习2 小时前
C语言基础(day0424)
c语言·开发语言·数据结构