[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;
}
相关推荐
CSDN_RTKLIB12 小时前
两版本锁抛出异常测试
c++
晨非辰12 小时前
Linux权限管理速成:umask掩码/file透视/粘滞位防护15分钟精通,掌握权限减法与安全协作模型
linux·运维·服务器·c++·人工智能·后端
TracyCoder12319 小时前
LeetCode Hot100(15/100)——54. 螺旋矩阵
算法·leetcode·矩阵
u01092727120 小时前
C++中的策略模式变体
开发语言·c++·算法
2501_9418372620 小时前
停车场车辆检测与识别系统-YOLOv26算法改进与应用分析
算法·yolo
Aevget21 小时前
MFC扩展库BCGControlBar Pro v37.2新版亮点:控件功能进一步升级
c++·mfc·界面控件
探序基因21 小时前
单细胞Seurat数据结构修改分群信息
数据结构
六义义21 小时前
java基础十二
java·数据结构·算法
四维碎片21 小时前
QSettings + INI 笔记
笔记·qt·算法
Tansmjs21 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法