PAT甲1046 简单模拟 发表于 2020-05-20 | 字数统计: 179 | 阅读时长 ≈ 1 题目链接 思路:用前缀和计算前缀的和为多少,然后判断两种方法直接到还是走两段的付出少,记为ans 代码: 1234567891011121314151617181920212223242526272829303132333435363738394041#include<iostream>using namespace std;const int maxn=1e5+7;typedef long long ll;ll sum[maxn],total;int a[maxn];void pd(int &x,int &y){ int t; if(x>y) { t=x; x=y; y=t; } }int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; sum[i]=a[i]+sum[i-1]; total+=a[i]; } int m; cin>>m; while(m--) { int x,y; cin>>x>>y; pd(x,y); ll ans1=0,ans2=0,ans; ans1=sum[y-1]-sum[x-1]; ans2=total-(ans1); ans=min(ans1,ans2); cout<<ans<<endl; } return 0;} -------------本文结束感谢您这么好看还看我的文章-------------