题目描述
解题思路
首先分别预处理奇数位偶数位的前缀和,存在a,b中。
然后枚举被拿走的点,那个点之前的数奇偶都不变,之后的奇边偶偶变奇。
SO,奇数位和偶数位的和分别是
a
[
i
−
1
]
+
b
[
n
]
−
b
[
i
]
a[i-1]+b[n]-b[i]
a[i−1]+b[n]−b[i]和
b
[
i
−
1
]
+
a
[
n
]
−
a
[
i
]
b[i-1]+a[n]-a[i]
b[i−1]+a[n]−a[i],若他们相等,则
a
n
s
+
+
ans++
ans++
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
int n,x,a[201000],b[201000],p,q,ans;
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(i%2==0)
b[i]=b[i-1]+x,a[i]=a[i-1];
else
a[i]=a[i-1]+x,b[i]=b[i-1];
}
for(int i=1;i<=n;i++)
{
if((b[i-1]+a[n]-a[i]==a[i-1]+b[n]-b[i]))
ans++;
}
printf("%d",ans);
}
``