日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[luogu3760 TJOI2017] 异或和(树状数组)

發(fā)布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [luogu3760 TJOI2017] 异或和(树状数组) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

傳送門

Solution

一位一位考慮,直接得到答案中第i為是否為1

Code

//By Menteur_Hxy
#include <ctime>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define Re register
#define Ms(a,b) memset(a,(b),sizeof(a))
#define Fo(i,a,b) for(Re int i=(a),_=(b);i<=_;i++)
#define Ro(i,a,b) for(Re int i=(b),_=(a);i>=_;i--)
#define Lof(i,a,b) for(Re int i=(a),_=(b);i<=_;i+=i&-i)
#define Lor(i,a) for(Re int i=(a);i;i-=i&-i)
using namespace std;
typedef long long LL;inline int read() {int x=0,f=1;char c=getchar();while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();return x*f;
}const int N=1e6+10;
int n,m;
LL ans;
LL a[N],s[N],b[N];struct BIT{int da[2][N];void clear() {Ms(da,0);}void Modify(int x,int k) {Lof(i,x,m)da[k][i]++;}LL query(int x,int k) {LL t=0;Lor(i,x)t+=da[k][i];return t;}
}B;int main() {n=read(); Fo(i,1,n) a[i]=read(),s[i]=s[i-1]+a[i]; m=s[n];Fo(i,0,20) {if((1ll<<i)>m) break; bool cnt=0; B.clear(); B.Modify(1,0);Fo(j,1,n) {LL o=s[j]&(1ll<<i),tmp=0;if(o) tmp=B.query(b[j]+1,0)+B.query(m,1)-B.query(b[j]+1,1);else tmp=B.query(b[j]+1,1)+B.query(m,0)-B.query(b[j]+1,0);if(tmp&1) cnt^=1;  B.Modify(b[j]+1,(o>0)); b[j]|=o;} if(cnt) ans|=(1ll<<i);}printf("%lld",ans);return 0;
}

轉(zhuǎn)載于:https://www.cnblogs.com/Menteur-Hxy/p/9807624.html

總結

以上是生活随笔為你收集整理的[luogu3760 TJOI2017] 异或和(树状数组)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。