1046 Shortest Distance (20 分)难度: 简单 / 知识点: 前缀和 / 破环成链
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1046 Shortest Distance (20 分)难度: 简单 / 知识点: 前缀和 / 破环成链相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805342720868352/problems/994805435700199424
对于环这种情况,开两倍的数组即可。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
int a[N],s[N],n,m;
int main(void)
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],a[i+n]=a[i];
for(int i=1;i<=2*n;i++) s[i]=s[i-1]+a[i];
cin>>m;
while(m--)
{
int l,r; cin>>l>>r;
if(l>r) swap(l,r);// 1-5 等价于 5-1 我们默认让l<=r
int sum1=s[r-1]-s[l-1];
int sum2=s[l+n-1]-s[r-1];
cout<<min(sum1,sum2)<<endl;
}
return 0;
}
以上是关于1046 Shortest Distance (20 分)难度: 简单 / 知识点: 前缀和 / 破环成链的主要内容,如果未能解决你的问题,请参考以下文章
1046 Shortest Distance (20 分)(简单模拟,前缀和)
PAT——甲级1046S:shortest Distance