博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【cf842D】Vitya and Strange Lesson(01字典树)
阅读量:5994 次
发布时间:2019-06-20

本文共 825 字,大约阅读时间需要 2 分钟。

题意

数列里有n个数,m次操作,每次给x,让n个数都异或上x。并输出数列的mex值。

题解

01字典树保存每个节点下面有几个数,然后当前总异或的是sw,则sw为1的位的节点左右孩子交换(不用真的交换)。左孩子的值小于左边总节点数则mex在左子树,否则在右子树。

代码

const int N=531000;//3e5<2^19
>pos)&1], pos-1, num); cnt[node]=cnt[ch[node][0]]+cnt[ch[node][1]]; } int Query(int node, int pos, int num){ if(pos<0) return num; int lson=(sw&(1<

自从用了cf上偷来的开头模板以后,感觉写代码速度也快了。但是,代码像裙子越短越性感。所以博客上就不放头文件了。

其实可以像线段树一样写,写得更短了哈哈:

const int N=531000;int sw=0;struct Trie{    int cnt[N*20];    void Insert(int node, int pos, int num){        if(pos<0){cnt[node]=1;return;}        Insert(node<<1|((num>>pos)&1), pos-1, num);        cnt[node]=cnt[node<<1]+cnt[node<<1|1];    }    int Query(int node, int pos, int num){        if(pos<0) return num;        int cur=(sw>>pos)&1;        cur|=node<<1;        if(cnt[cur]<(1<

转载地址:http://utqlx.baihongyu.com/

你可能感兴趣的文章
Mac下通过 brew 安装不同版本的php
查看>>
云在天之南——我的七天七夜(率性苍山洱海)
查看>>
如何迅速入门Shell 编程
查看>>
Linux企业应用微博客正式开通
查看>>
64位linux下的gns3网络模拟器配置
查看>>
效果差学费贵售后难,VIPKID米雯娟的野心不能只靠“烧钱”营销
查看>>
Windows Server 2012 R2 WSUS-10:流程概述
查看>>
自动发现服务是怎样工作的?
查看>>
Office 365 系列之七:安装Office 365 ProPlus
查看>>
闲诗一首:《莫追梦》
查看>>
Cisco/H3C交换机配置与管理完全手册(第2版)卓越网正式到货
查看>>
让VMware ESX中的虚拟机随esx开机自动启动
查看>>
rhel6.5解决包的依赖的一个处理方法
查看>>
小功能隐藏着大学问---windows的ACL带来的挑战
查看>>
RSA2012系列(4):网络战揭秘
查看>>
Puppet扩展篇6-通过横向扩展puppetmaster增加架构的灵活性
查看>>
西安OpenParty11月29日活动高清图文回顾——新增西安APEC蓝美图!
查看>>
SFB 项目经验-16-呼叫前客户端性能测试
查看>>
我是如何帮助创业公司改进企业工作的
查看>>
taglist
查看>>