[2020.10.26SSLシミュレーショントーナメントT4]広場に行く[サフィックスと]

ここに画像の説明を挿入
ここに画像の説明を挿入

分析:

奇数ビット偶数ビットのプレフィックスとサフィックスを前処理し
列挙位置のすぐ後ろに+統計を追加できます。

コード:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=2e5+5;
long long a[N],f[N][3];
int n;
int main(){
    
    
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=2;j++)
			f[i][j]=f[i-1][j]+(i%2==j-1)*a[i];  //预处理
			//等价于f[i][j]=f[i-1][j]+(i%2==j)*a[i],其中j分别为f[i][0]和f[i][1]
			//也就是判断奇偶 顺便累加 不过个人更喜欢1~2存储 所以……
	long long ans=0;
	for(int i=1;i<=n;i++)
		if(f[i-1][2]-f[i-1][1]-(f[n][2]-f[i][2]-f[n][1]+f[i][1])==0) ans++;  //枚举位置
	printf("%lld",ans);
		
	return 0;
}

おすすめ

転載: blog.csdn.net/dgssl_xhy/article/details/109299541