[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;
}
相关推荐
曙曙学编程1 小时前
进阶数据结构——二叉堆
数据结构
吃辣椒的年糕2 小时前
C++ 课程学习笔记:从对象生命周期看资源管理之道
java·c语言·开发语言·c++
黑夜无路人2 小时前
redis底层数据结构——整数集合
数据结构·redis
补三补四3 小时前
支持向量机(一)
算法·机器学习·支持向量机
Zz_waiting.5 小时前
java数据结构_二叉树_5.4
数据结构·算法
天亮有惊喜5 小时前
基于改进型灰狼优化算法(GWO)的无人机路径规划
算法·matlab·路径规划·灰狼优化算法·gwo
钟离墨笺5 小时前
【c++】四种类型转换形式
开发语言·c++
程序员东min5 小时前
Python:凯撒密码
python·算法
汤姆和杰瑞在瑞士吃糯米粑粑6 小时前
【C++学习篇】C++11
开发语言·c++
_extraordinary_6 小时前
C++智能指针的使用
c++·智能指针