题解
题目大意,给你一个序列,删去一个数值之后,要求剩下序列奇数和偶数的和相同,问有多少种删法。
对序列做前缀和,奇加偶减,遍历每个位置,检测除去当前位置前半部分前缀和和后半部分前缀和是否相等(后半部分删去后奇偶互换)
AC代码
#include <stdio.h>
#include <bits/stdc++.h>
#define fst first
#define sed second
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const int MAXN = 2e5 + 10;
int s[MAXN];
int main()
{
#ifdef LOCAL
//freopen("C:/input.txt", "r", stdin);
#endif
int n, a;
cin >> n;
for (int i = 1; i <= n; i++)
{
scanf("%d", &a);
s[i] = s[i - 1] + (i & 1 ? a : -a);
}
int ans = 0;
for (int i = 1; i <= n; i++)
if (s[i - 1] == s[n] - s[i])
ans++;
cout << ans << endl;
return 0;
}