E. Beautiful Subarrays
来源:互联网 发布:淘宝融合期 编辑:程序博客网 时间:2024/06/07 08:02
trie树
利用前缀和,然后注意要先插入0;
可以比较一下我的另外一篇,有一处不太一样,其他的大致相同
#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>#include <map>#define FOR(i,a,b) for(int i=a;i<=b;i++)#define ROF(i,a,b) for(int i=a;i>=b;i--)#define mem(i,a) memset(i,a,sizeof(i))#define rson mid+1,r,rt<<1|1#define lson l,mid,rt<<1#define ll long long#define LL long longusing namespace std;const double eps = 0.0000001;const int maxn = 1e5+7;const int mod = 1e9+7;template <typename T>inline void read(T &_x_){ _x_=0;bool f=false;char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=!f;ch=getchar();} while ('0'<=ch&&ch<='9') {_x_=_x_*10+ch-'0';ch=getchar();} if(f) _x_=-_x_;}struct node{ node*ch[2]; int v; node(){ch[0]=ch[1]=NULL;v=0;}};node*root=new node();node*rt;int id,n,k;ll ans=0;void update(int x){ rt=root; for(int i=30;i>=0;i--){ id = (x>>i)&1; if(rt->ch[id]==NULL) rt->ch[id]=new node(); rt=rt->ch[id]; rt->v++; }}void query(int m){ rt=root; for(int level=30;level>=0;level--){ if(rt==NULL) break; int x=(m>>level)&1; int y=(k>>level)&1; if(y==0){ if(rt->ch[x^1]!=NULL) ans+=rt->ch[x^1]->v; rt=rt->ch[x]; }else rt=rt->ch[x^1]; } if(rt!=NULL) ans+=rt->v; //和我另一篇利用trie的博客最大的不同是这里。}int main(){ read(n);read(k); update(0); int x,sum=0; FOR(i,1,n){ read(x); sum^=x; query(sum); update(sum); } printf("%I64d\n",ans); return 0;}
阅读全文
0 0
- E. Beautiful Subarrays
- CodeForces 665E Beautiful Subarrays
- CodeForces 665E Beautiful Subarrays(Trie)
- Educational Codeforces Round 12 E. Beautiful Subarrays
- Educational Codeforces Round 12-E. Beautiful Subarrays
- Codeforces 665E. Beautiful Subarrays (trie树)
- Codeforces 665E Beautiful Subarrays (Trie树)
- Educational Codeforces Round 12 E. Beautiful Subarrays
- Educational Codeforces Round 12E. Beautiful Subarrays
- Codeforces 665E Beautiful Subarrays (01Trie)
- Beautiful Subarrays
- Educational Codeforces Round 12 E. Beautiful Subarrays【字典树】
- Codeforces-665E-Beautiful Subarrays Trie树(字典树)
- Codeforces 665E Beautiful Subarrays【01trie树】
- Codeforces 665E Beautiful Subarrays (01字典树)
- codeforces665e Beautiful Subarrays(trie)
- Educational Codeforces Round 12 E. Beautiful Subarrays 预处理前缀+字典树优化★ ★
- CF665E Beautiful Subarrays字典树
- Android之intent学习笔记
- 跟高手学习大型项目的应对(下)
- google hack 寻找后台的文件名和关键字(以asp为例)
- Cookie和Session机制
- 以太坊防篡改验证的交流
- E. Beautiful Subarrays
- 理解事务的4种隔离级别
- 堆排序
- dts list python tool
- Facebook加入直播功能,带你窥探虚拟现实世界
- 如何使用dreamweave cc给图片加热点链接?
- 通过servlet连接数据库和HTML,完成登陆注册
- Leetcode-Valid Sudoku
- 第六章项目时间管理