E. Beautiful Subarrays(01字典树)
题意:
- 给一个长度为n的数组a,问有多少个连续的子数组的异或和大于等于k
思路:
- 01字典树
- 建立前缀异或和数组,题目变为有多少个
- 类似(几乎一模一样)的题目
-
一次插入一个左端点,然后枚举右端点的情况
-
R ^ L
k,从高位往低位 -
,必须 ^ ,走 ^ ; ^ 会造成比 k 小,忽略 ,若 ^ ,加上 ^ 这个方向,因为这个方向必然会比 k 小;若 ^ ,走 这个方向
#include<bits/stdc++.h> #define debug1(a) cout<<#a<<'='<< a << endl; #define debug2(a,b) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<endl; #define debug3(a,b,c) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<endl; #define debug4(a,b,c,d) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<" "<<#d<<" = "<<d<<endl; #define debug5(a,b,c,d,e) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<" "<<#d<<" = "<<d<<" "<<#e<<" = "<<e<<endl; #define endl "\n" #define fi first #define se second //#define int long long using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> PII; typedef pair<LL,LL> PLL; //#pragma GCC optimize(3,"Ofast","inline") //#pragma GCC optimize(2) const int N = 1e6+10; int son[32*N][2],idx; int cnt[32*N]; int a[N]; int n,k; void insert(int x) { int p = 0; for (int i = 30; i >= 0; i -- ) { int &s = son[p][x >> i & 1]; if (!s) s = ++ idx; p = s; cnt[p] ++; } } int get(int x,int R) { int p = 0; int res = 0; for(int i = 30;i >= 0;i -- ) { if(x >> i & 1) { p = son[p][(R>>i&1)^1]; }else{ res += cnt[son[p][(R>>i&1)^1]]; p = son[p][R>>i&1]; } if(p == 0)return res; } return res + cnt[p]; } void solve() { cin >> n >> k; for(int i = 1;i <= n;i ++) { cin >> a[i]; a[i] ^= a[i-1]; } long long ans = 0; insert(0); for(int i = 1;i <= n;i ++) { ans += get(k,a[i]); insert(a[i]); } cout << ans << endl; } signed main() { /* ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); */ int T = 1;//cin >> T; while(T--){ //puts(solve()?"YES":"NO"); solve(); } return 0; } /* */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具