自测全过???
查看原帖
自测全过???
251882
蒟蒻丁楼主2020/7/22 20:57

不要脸地复制了标程来“对拍”,随机数据和小数据全部过了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define ll long long
using namespace std;
ll n,m,a[400000],sum[400000],c[5]={1},ans;

int main(){
	//freopen("C:/t.txt","r",stdin);
	scanf("%lld",&n);
	
	for(ll i=1;i<=n;i++){
		ll a1,maxx=0;
		scanf("%lld",&a1);
		a[i]=__builtin_popcount(a1),sum[i]=sum[i-1]+a[i];
		maxx=max(maxx,a[i]);
		ans+=c[sum[i]%2];
		
		for(ll j=i;j>=max(i-64,(ll)1);j--){
			maxx=max(maxx,a[j]);
			if(sum[i]-sum[j-1]<2*maxx&&(sum[i]-sum[j-1])%2==0)ans--;
		}
		
		++c[sum[i]%2];
	}
	
	cout<<ans;
}

2020/7/22 20:57
加载中...