[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;
}
相关推荐
卡提西亚3 分钟前
C++笔记-34-map/multimap容器
开发语言·c++·笔记
lxh011323 分钟前
螺旋数组题解
前端·算法·js
2***B44924 分钟前
C++在金融中的QuantLibXL
开发语言·c++·金融
A***071738 分钟前
C++在游戏中的阴影渲染
开发语言·c++·游戏
czlczl200209251 小时前
算法:二叉树的公共祖先
算法
Q***l6872 小时前
C++在计算机图形学中的渲染
开发语言·c++
稚辉君.MCA_P8_Java2 小时前
Gemini永久会员 Java动态规划
java·数据结构·leetcode·排序算法·动态规划
oioihoii2 小时前
C++语言演进之路:从“C with Classes”到现代编程基石
java·c语言·c++
小白程序员成长日记2 小时前
2025.11.23 力扣每日一题
算法·leetcode·职场和发展
咔咔咔的2 小时前
3190. 使所有元素都可以被 3 整除的最少操作数
c++