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

pat 1046 Shortest Distance(20 分) (线段树)

(C++)1046 Shortest Distance

A1046——入门模拟 Shortest Distance

1046 Shortest Distance (20 分)难度: 简单 / 知识点: 前缀和 / 破环成链