Educational Codeforces Round 23:E. Choosing The Commander(字典树01异或)

题意:
3种操作:

1 插入一个数

2 删除一个数

3 给出一个数pi和l,询问有多少个数pj满足pi^pj<l

思路:
建字典树,询问的时候当碰到 l 的某一位为1的某一位为1的时候,就更新结果,然后继续搜索
注意siz初始化为1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e6+5;
int t,tire[maxn][2],sp[40],lp[40],p[40],siz=1,val[maxn];void insert(int* s,int w){int now=1;for(int i=0;i<=28;i++){if(!tire[now][s[i]])tire[now][s[i]]=++siz;now=tire[now][s[i]];val[now]+=w;}
}
int query(int* s,int* l){int now=1,ans=0;for(int i=0;i<=28;i++){if(l[i])ans+=val[tire[now][s[i]]];now=tire[now][s[i]^l[i]];}return ans;
}
void getbit(int x){for(int i=28,d=1<<i,z=0;i>=0;i--,d=1<<i,z++){if(x&d)p[z]=1;else p[z]=0;}
}
int main(){scanf("%d",&t);while(t--){int op,a,b;scanf("%d",&op);if(op==1){scanf("%d",&a);getbit(a);for(int i=0;i<=28;i++)sp[i]=p[i]; insert(sp,1);}else if(op==2){scanf("%d",&a);getbit(a);for(int i=0;i<=28;i++)sp[i]=p[i];insert(sp,-1);}else{scanf("%d%d",&a,&b);getbit(a);for(int i=0;i<=28;i++)sp[i]=p[i]; getbit(b);for(int i=0;i<=28;i++)lp[i]=p[i]; printf("%d\n",query(sp,lp));}}
}

Educational Codeforces Round 23:E. Choosing The Commander(字典树01异或)相关推荐

  1. Educational Codeforces Round 23 E. Choosing The Commander 字典树

    题目连接:E. Choosing The Commander 题意:士兵有个值,指挥官有两个p,l三种操作,第一种添加一个值为p的士兵,第二种删除一个值为p的士兵,(士兵pi只会尊敬pi^p<l ...

  2. Educational Codeforces Round 17 E. Radio stations cdq分治 + 树状数组

    传送门 文章目录 题意 思路: 题意 有nnn个电台,对于每个电台iii有三个参数xi,ri,fix_i,r_i,f_ixi​,ri​,fi​,分别指他们的坐标.作用半径.频率.如果两个电台频率差值在 ...

  3. Educational Codeforces Round 37-F.SUM and REPLACE (线段树,线性筛,收敛函数)

    F. SUM and REPLACE time limit per test2 seconds memory limit per test256 megabytes inputstandard inp ...

  4. Educational Codeforces Round 22 E. Army Creation 【主席树】

    题目链接 题意 给出一个序列a[1..n]a[1..n]a[1..n],mmm 次询问区间 [L,R][L,R][L,R] 可以选多少个数(相同的数最多选 KKK 个),强制在线 题解 先求出每个 i ...

  5. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  6. Educational Codeforces Round 24 E. Card Game Again(双指针)

    题目链接:Educational Codeforces Round 24 E. Card Game Again 题意: 给你n个数和一个数k. 现在每次可以拿掉前x个数,后y个数,剩下的数的乘积要能被 ...

  7. Educational Codeforces Round 25 G. Tree Queries

    题目链接:Educational Codeforces Round 25 G. Tree Queries 题意: 给你一棵树,一开始所有的点全是黑色,有两种操作. 1 x 将x这个点变为黑色,保证第一 ...

  8. Educational Codeforces Round 40千名记

    人生第二场codeforces.然而遇上了Education场这种东西 Educational Codeforces Round 40 下午先在家里睡了波觉,起来离开场还有10分钟. 但是突然想起来还 ...

  9. Educational Codeforces Round 133 (Rated for Div. 2)(CD题解)

    Educational Codeforces Round 133 (Rated for Div. 2)CD题解 过AB补CD C. Robot in a Hallway 题意 题意:现有 2∗m 的方 ...

最新文章

  1. 数据解读“特殊”春运:“返乡过年”人数同比降五成,这些人成今年春运主力...
  2. 正则表达式基本语法元字符
  3. 简单介绍一下solr
  4. ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例
  5. Uniapp 导入 Vant 组件库
  6. c++游戏编程100事列_游戏编程入门(c++小游戏编程100例)
  7. 6678EMIF总结
  8. 【2019.06.21】基于Airtest的微信朋友圈自动点赞脚本设计与实现 2019.06.21脚本正常运行
  9. 下次约会时,让人工智能做你的僚机!
  10. #超级818汽车狂欢夜#易车 买车不吃亏就上易车app
  11. 查询oracle原始表d,oracle 多表查询
  12. 【Qt】动态刷新lcdNumber显示的值
  13. Android 安卓动画 属性动画 - 移动动画
  14. win10下使用oflash时提示ftd2xx.dll缺失
  15. Xilinx-7系列 CLB逻辑资源
  16. feed流和瀑布流_推荐系统之Feed流UI交互设计
  17. 《利用Python进行数据分析》第一个案例
  18. JQuery表单的提交方式
  19. 数据库设计之area区域表改版后,数据库设计之区域表
  20. MT9V034六个寄存器的配置

热门文章

  1. fasterrcnn使用
  2. 越疆科技dobot(magician)机械臂在ROS moveit下gazebo仿真控制和真实控制功能包 有兴趣的可以下载来玩
  3. 南邮和重庆邮电大学计算机专业,同是邮电高校,南邮和重庆邮电大学谁更厉害?...
  4. 42-面对对象编程(高级部分)2
  5. 太阳能锂电池充电电路
  6. 2022-2028全球与中国循环冷冻空气干燥机市场现状及未来发展趋势
  7. 【STM32-FatFs】fatfs(文件系统)执行f_sync之前数据保存在什么地方(stm32)
  8. java 龟兔赛跑预测_龟兔
  9. php怎么改成java,求大神帮忙把php的改成java谢谢
  10. courgette(小胡瓜)测试报告