1530. 最短距离
摘要
Title: 1530. 最短距离
Tag: 前缀和
Memory Limit: 64 MB
Time Limit: 1000 ms
Powered by:NEFU AB-IN
1530. 最短距离
-
题意
一个环形高速公路上有 N 个出口,共有 M 次询问,每次询问你需要回答其中两个出口之间的最短距离是多少。
-
思路
可以用前缀和解决,一共就是两条路,两条路的和为数组的总和,判断一下哪个更短即可
-
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using namespace std;
signed main()
{
int n;
cin >> n;
vector <int> v (n + 1);
for(int i = 1; i <= n; ++ i){
cin >> v[i];
}
int sum = accumulate(v.begin(), v.end(), 0);
for(int i = 1; i <= n; ++ i){
v[i] += v[i - 1];
}
int m;
cin >> m;
for(int i = 0; i < m; ++ i){
int l, r;
cin >> l >> r;
if(l > r) swap(l, r);
r--, l--;
cout << min(v[r] - v[l], sum - v[r] + v[l]) << '\n';
}
return 0;
}