【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie

我们观察数据:树套树 PASS    主席树 PASS  一层一个Trie PASS

再看,异或!我们就把目光暂时定在01Tire然后我们发现,我们可以带着一堆点在01Trie上行走,因为O(n*q*30+m*30)是一个可选复杂度。

我们想一下我们正常的时候的01Trie其实是通过在每一层比较大小来确定这一为是0还是1,所以我们从上到下一位一位地走,统计每在这一位异或值为1的数的个数,如果这一位是一的个数大于k那么我们就使这一位为1,那么我们就舍弃这一位为0的状态就是所有的点都走变为1的路,如果这一位是一的个数小于k那么我们就使这一位为0,其余同理。

#include <cstdio>
using namespace std;
const int A=30,MAXN=12000000,N=1010,M=300010;
inline void read(int &sum){register char ch=getchar();for(sum=0;ch<'0'||ch>'9';ch=getchar());for(;ch>='0'&&ch<='9';sum=(sum<<1)+(sum<<3)+ch-'0',ch=getchar());
}
struct Trie{Trie *ch[2];int size;
}*root[M],*null,node[MAXN],*now[N][2];
int n,m,sz=1,a[N];
int main(){null=node,null->ch[0]=null->ch[1]=null,root[0]=null;read(n),read(m);for(register int i=1;i<=n;i++)read(a[i]);for(register int i=1,x;i<=m;i++){read(x),root[i]=node+sz,sz++;register Trie *p=root[i],*last=root[i-1];for(register int i=A;i>=0;i--)p->ch[(x>>i)&1]=node+sz,sz++,p->ch[((x>>i)&1)^1]=last->ch[((x>>i)&1)^1],p=p->ch[(x>>i)&1],last=last->ch[(x>>i)&1],p->size=last->size+1;}register int u,d,l,r,k,Q;read(Q);while(Q--){read(u),read(d),read(l),read(r),read(k);register int ret=0;for(register int i=u;i<=d;i++)now[i][1]=root[r],now[i][0]=root[l-1];for(register int i=A,sum=0;i>=0;i--,sum=0){for(register int j=u;j<=d;j++)sum+=((a[j]>>i)&1)==0?(now[j][1]->ch[1]->size-now[j][0]->ch[1]->size):(now[j][1]->ch[0]->size-now[j][0]->ch[0]->size);if(sum>=k){ret|=1<<i;for(register int j=u;j<=d;j++)now[j][1]=now[j][1]->ch[((a[j]>>i)&1)^1],now[j][0]=now[j][0]->ch[((a[j]>>i)&1)^1];}else{k-=sum;for(register int j=u;j<=d;j++)now[j][1]=now[j][1]->ch[(a[j]>>i)&1],now[j][0]=now[j][0]->ch[(a[j]>>i)&1];}}printf("%d\n",ret);}return 0;
}

 

转载于:https://www.cnblogs.com/TSHugh/p/7281862.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker学习笔记——Java及Tomcat Dockerfile

1、Java Dockerfile创建项目目录java&#xff0c;目录下上传所需java版本压缩包&#xff0c;并创建Dockerfile文件&#xff0c;项目结构如下&#xff1a;java-Dockerfile-jdk-8u111-linux-x64.gzDockerfile内容&#xff1a;# JAVA # Version 1.8.0_111 # SOURCE_IMAGE FROM cen…

rabbitmq接口异常函数方法_RabbitMQ监控(三):监控队列状态

#RabbitMQ 监控(三)验证RabbitMQ健康运行只是确保消息通信架构可靠性的一部分&#xff0c;同时&#xff0c;你也需要确保消息通信结构配置没有遭受意外修改&#xff0c;从而避免应用消息丢失。RabbitMQ Management HTTP API提供了一个方法允许你查看任何vhost上的任何队列&…

FFMpeg语法参数中文参考手册

要查看你的ff mpeg支持哪些 格式&#xff0c;可以用如下命令&#xff1a;$ ffmpeg -formats | less还可以把 视频文件导出成jpg序列帧&#xff1a;$ ffmpeg -i bc-cinematic-en.avi example.%d.jpgdebian下安装ffmpeg很简单&#xff1a;&#xff03;apt-get install ffmpegffmp…

Java类集框架 —— LinkedHashMap源码分析

前言 我们知道HashMap底层是采用数组单向线性链表/红黑树来实现的&#xff0c;HashMap在扩容或者链表与红黑树转换过程时可能会改变元素的位置和顺序。如果需要保存元素存入或访问的先后顺序&#xff0c;那就需要采用LinkedHashMap了。 LinkedHashMap结构 LinkedHashMap继承自H…

apache 支持.htaccess重写url

1. httpd.conf 添加&#xff1a; <Directory />Options Indexes FollowSymLinks MultiviewsAllowOverride allRequire all grantedRewriteEngine On</Directory> 开启&#xff1a; 在phpinfo里找到&#xff1a; 说明开启成功。 2.httpd-vhosts.conf &#xff08;开…

oom 如何避免 高并发_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!...

【高并发】高并发环境下如何防止Tomcat内存溢出&#xff1f;看完我懂了&#xff01;&#xff01;发布时间&#xff1a;2020-04-19 00:47,浏览次数&#xff1a;126, 标签&#xff1a;Tomcat写在前面随着系统并发量越来越高&#xff0c;Tomcat所占用的内存就会越来越大&#xff0…

[JSOI2008]最小生成树计数

OJ题号&#xff1a;  BZOJ1016 题目大意&#xff1a;   给定一个无向带权图&#xff0c;求最小生成树的个数。 思路&#xff1a;   先跑一遍最小生成树&#xff0c;统计相同权值的边出现的个数。   易证不同的最小生成树&#xff0c;它们不同的那一部分边的权值实际上是…

vuex webpack 配置_vue+webpack切换环境和打包之后服务器配置

import axios from ‘axios‘import store from ‘../store/index‘const rootUrl process.env.API_ROOT//创建axios实例const service axios.create({timeout:30000 //超时时间})//添加request拦截器service.interceptors.request.use(config >{if (Object.keys(config.hea…

redis基本用法学习(C#调用FreeRedis操作redis)

FreeRedis属于常用的基于.net的redis客户端&#xff0c;EasyCaching中也提供适配FreeRedis的包。根据参考文献4中的说法&#xff0c;FreeRedis和CsRedis算是近亲&#xff08;都是GitHub中账号为2881099下的开源项目&#xff09;&#xff0c;因此其用法特别相似。FreeRedis的主要…

opencv:图像的基本变换

0.概述 图像变换的基本原理都是找到原图和目标图的像素位置的映射关系&#xff0c;这个可以用坐标系来思考&#xff0c;在opencv中&#xff0c; 图像的坐标系是从左上角开始(0,0)&#xff0c;向右是x增加方向(cols)&#xff0c;向下时y增加方向(rows)。 普通坐标关系&#xff1…

FFMpeg在Windows环境下的编译

1&#xff0e;安装MinGW &#xff08;1&#xff09;下载文件&#xff1a;MinGW-5.1.4.exe&#xff0c; &#xff08;2&#xff09;安装时选择下列组件&#xff1a; binutils-2.19.1-mingw32-bin.tar.gz gcc-core-3.4.5-20060117-3.tar.gz gcc-g-3.4.5-20060117-3.tar.gz …

中通知设置响铃_主动切断干扰源——手机“通知”精细化管理

上周去参加我福福幼儿园的母亲节活动&#xff0c;内容是孩子和家长一起穿手链。期间我发现和我同桌的一个家长的手机不停在响&#xff0c;当然伴随着注意力被打断。不仅是这位家长自己&#xff0c;连我也受到了干扰。于是职业病又犯了&#xff0c;我悄悄的看了一眼这位家长的手…

OCM_第十九天课程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 应用/DATA GUARD 搭建...

注&#xff1a;本文为原著&#xff08;其内容来自 腾科教育培训课堂&#xff09;。阅读本文注意事项如下&#xff1a;1&#xff1a;所有文章的转载请标注本文出处。2&#xff1a;本文非本人不得用于商业用途。违者将承当相应法律责任。3&#xff1a;该系列文章目录列表&#xf…

python安装各种插件

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip 感受&#xff1a;如果编辑pip真的一直出问题&#xff0c;考虑降成32位的进行安装。毕竟合理搭配比木桶突出有用。转载于:https://www.cnblogs.com/osmondwang/p/7307678.html

编写数学公式的好工具

2019独角兽企业重金招聘Python工程师标准>>> http://private.codecogs.com/latex/eqneditor.php 转载于:https://my.oschina.net/yizhichao/blog/1542153

dev gridview 打印列数过多_R语言:如何将多张统计图绘制在一张上面

在使用R语言进行数据可视化的时候&#xff0c;常常需要将多张统计图表绘制在同一张图上面&#xff0c;从而更高效地传递信息&#xff0c;下面我们就来一起看看具体如何实现。一、使用R语言自带的函数绘制的图像R语言本身就已经内置了许多绘图函数&#xff0c;能够满足较为基本的…

264分析两大利器 和 视频系列下载:264VISA和Elecard StreamEye Tools

学了264有将近3个月有余&#xff0c;好多时候都在学习老毕的书和反复看JM86的代码&#xff0c;最近才找到264分析两大利器&#xff1a;264VISA和Elecard StreamEye Tools。不由得感叹&#xff0c;恨不逢同时。 简单的说下这两个软件&#xff1a; 264visa 强力的h264实时分析工具…

[转]vue全面介绍--全家桶、项目实例

慢慢了解vue及其全家桶的过程 原文http://blog.csdn.net/zhenghao35791/article/details/67639415 简介 “简单却不失优雅&#xff0c;小巧而不乏大匠”。 2016年最火的前端框架当属Vue.js了&#xff0c;很多使用过vue的程序员这样评价它&#xff0c;“vue.js兼具angular.js和R…

opencv 星空_opencv如何将大于5000像素点的轮廓绘制出来?

contourArea函数的运用。具体例子可以看下面的。《如何获得物体的主要方向&#xff1f;》代码略解&#xff1a;1、读入图片&#xff0c;寻找轮廓&#xff1b;//读入图像&#xff0c;转换为灰度Mat img imread("e:/sandbox/pca1.jpg");Mat bw;cvtColor(img, bw, COLO…

TS 188字节流结构图

应该说真正了解TS&#xff0c;还是看了朋友推荐的《数字电视业务信息及其编码》一书之后&#xff0c;MPEG2 TS和数字电视是紧密不可分割的&#xff0c;值得总结一下其中的一些关系。 ISO/IEC&#xff0d;13818&#xff0d;1&#xff1a;系统部分&#xff1b; ISO/IEC&#xff…