首页 > 其他 > 详细

Color Sequence

时间:2021-04-01 13:55:27      阅读:22      评论:0      收藏:0      [点我收藏+]

 

状态压缩,比较相同状态取数

https://ac.nowcoder.com/acm/contest/13175/E

#include<bits/stdc++.h>
#define inf 1e18
#define ll long long
#define MAX 1000001
const ll N = 1e6+7;
const ll M = 3e6+7;
const ll mod = 1e9+7;
using namespace std;
int n,a[N];
int point[N];
int mp[M];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;++i)    scanf("%d",&a[i]);
    for(int i=1;i<=n;++i){
        point[i]=point[i-1];
        
        if((point[i]>>a[i])&1)    point[i]-=(1ll<<a[i]);
        else                    point[i]+=(1ll<<a[i]);
    }
    for(int i=0;i<=n;++i){
        mp[point[i]]++;
    }
    ll ans=0; 
    for(int i=0;i<=n;++i){
        mp[point[i]]--;
        ans+=mp[point[i]];
    }
    printf("%lld\n",ans);
    return 0; 
}

 

Color Sequence

原文:https://www.cnblogs.com/PdrEam/p/14605289.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!