[BZOJ4523]路由表
对于每一条询问,我们可以通过一个数组维护第一次匹配长度为i时的插入时间来计算在[l,r]中改变了多少遍
由于现在长度已经单调,选择会发生变化当且仅当时间也单调,
于是我们可以通过单调栈计算[1,x]中改变了多少遍
ans=solve(r)-solve(l-1)
对于多个询问,我们可以把询问插入trie树中,实现多个询问共用一个维护数组
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 #define maxn 1000005 5 #define maxnd 15000000 6 struct node{ ll x; int l,r; }A[maxn],Q[maxn]; 7 int n,aa,qq; 8 int trie[maxnd][2],nd,mark[maxnd],sta[40]; 9 int read(){ 10 int tmp=0; char ch=0; 11 while(ch<'0'||ch>'9')ch=getchar(); 12 while(ch>='0'&&ch<='9')tmp=tmp*10+ch-'0',ch=getchar(); 13 return tmp; 14 } 15 void insert(ll x){ 16 int p=0; 17 for(int i=32;i;i--){ 18 int t=x>>(i-1)&1; 19 if(!trie[p][t])trie[p][t]=++nd; 20 p=trie[p][t]; 21 } 22 } 23 void init(){ 24 n=read(); 25 char op[3]; 26 for(int i=1;i<=n;i++){ 27 scanf("%s",op); 28 if(op[0]=='A'){ 29 aa++; 30 for(int j=0;j<4;j++) 31 A[aa].x=(A[aa].x<<8)|read(); 32 A[aa].l=read(); 33 } 34 else{ 35 qq++; 36 for(int j=0;j<4;j++) 37 Q[qq].x=(Q[qq].x<<8)|read(); 38 Q[qq].l=read(),Q[qq].r=read(); 39 insert(Q[qq].x); 40 } 41 } 42 } 43 void getmark(int pos){ 44 int p=0; 45 for(int i=32;i>32-A[pos].l;i--){ 46 int t=A[pos].x>>(i-1)&1; 47 if(!trie[p][t])return; 48 p=trie[p][t]; 49 } 50 if(!mark[p])mark[p]=pos; 51 } 52 int getans(ll x,int rng){ 53 int p=0,top=0; 54 for(int i=32;i;i--){ 55 int t=x>>(i-1)&1; 56 p=trie[p][t]; 57 if(mark[p]&&mark[p]<=rng){ 58 while(top&&mark[p]<sta[top])top--; 59 sta[++top]=mark[p]; 60 } 61 } 62 return top; 63 } 64 void solve(){ 65 for(int i=1;i<=aa;i++) 66 getmark(i); 67 for(int i=1;i<=qq;i++){ 68 int ans1=getans(Q[i].x,Q[i].l-1); 69 int ans2=getans(Q[i].x,Q[i].r); 70 printf("%d\n",ans2-ans1); 71 } 72 } 73 int main(){ 74 init(); 75 solve(); 76 return 0; 77 }
View Code
转载于:https://www.cnblogs.com/Ngshily/p/5424320.html
[BZOJ4523]路由表相关推荐
- r-route 命令 显示/配置ip路由表
文章目录 前言 语法格式 命令使用 输出含义 使用实例 前言 route命令用于显示和配置IP路由表,在不同节点间的网络通信,想要实现同一局域网之间的通信就需要交换机,不同局域网之间的通信就需要路由器 ...
- Linux命令之route - 显示和操作IP路由表
转自: http://codingstandards.iteye.com/blog/1125312 用途说明 route命令用于显示和操作IP路由表(show / manipulate the IP ...
- 路由器、路由与路由表
2019独角兽企业重金招聘Python工程师标准>>> 路由器.路由与路由表 路由器就是一台网络设备,它配备多个网络接口卡(NIC),能利用它的网络知识正确转发入口流量. 决定一个入 ...
- linux路由介绍,Linux的路由表详细介绍
Linux的路由表详细介绍 一 在Linux下执行route命令[root@localhost backup]# route -nKernel IP routing tableDestination ...
- Linux下路由表调试工具traceroute
在做静态路由表或者路由表分配时,比较直接的调试工具是traceroute,可以跟踪访问一个IP所到达的路由层级,从而知道经过哪些链路. 参考: http://man.linuxde.net/trace ...
- linux如何添加默认路由表_Linux-如何添加路由表
linux下静态路由修改命令 方法一: 添加路由 route add -net 192.168.0.0/24 gw 192.168.0.1 route add -host 192.168.1.1 de ...
- 华为路由器ospf路由表解读_华为动态路由OSPF实例详解之多区域配置-华为路由器设置...
在企业的大型网络中,因为设备众多,静态路由已经很难满足路由时常变化的需求,动态路由已经是必然选择,其中,OSPF又是最简单适合的动态路由协议,上一节已经介绍了单区域的OSPF配置,接着简单介绍下多区域 ...
- 修改路由表来使路由分流
作为IT人员.google搜索的精确性众所周知.所以,VPN自然成为众多大牛的必备利器.使用VPN的弊端,国内网站也走VPN网络.速度必然慢不少,所以.路由分流,访问国外网站使用VPN.国内还是走国内 ...
- Linux环境下路由表配置一
路由表配置网关及端口 网络地址:分析目标地址 接口:数据有可能从路由器的哪个出口出来,哪个就是接口 网关:目标网络与发数据的设备不在一个网段内,下一个路由器邻近主配置路由器的接口ip就是网关,线路 ...
- 电信、联通、移动、其它路由表 2011-06-19更新
电信.联通.移动.其它路由表 2011-06-19更新 转载于:https://blog.51cto.com/481872/591803
最新文章
- 给 Easyui Datagrid 扩展方法
- 移动APP接口遇到的一些小问题
- 连连看(HDU-1175)
- Linux安装中文字体_宋体
- java map 实例_java中map集合嵌套形式简单示例
- asp代码在dwearwear转换成html格式怎么转,为前端而生的编辑器Brackets及配置推荐
- Internet 打印提示“打印机安装失败、打印机名称无效”的解决
- python语言的主网址-python调用浏览器,打开一个网址
- HTML中更改hr宽度高度颜色
- 【转】Android 基于Socket的聊天室
- linux软件中心无法安装软件,linux中软件的安装
- 项目答辩PPT(一)
- mysql 断开的管道_java.net.SocketException: 断开的管道 (Write failed) 错误,数据库隔一段时间就断开的问题...
- java 找不到符号变量_java 编程中出现的 找不到符号 的问题
- about cisco DNA
- (MDY)2021秋季软件工程 alpha冲刺完善
- 如何拿到互联网巨头的Offer
- 你想要的宏基因组-微生物组知识全在这(2020.5)
- 教你一眼认出英语单词的意思
- 惜我者,我惜之; 冷我者,我弃之
热门文章
- tm1639c语言程序,51单片机各种汇编延时子程序整理汇总
- Caffe学习:使用pycaffe绘制loss、accuracy曲线
- web自动化测试第6步:模拟鼠标操作(ActionChains)
- 2021-08-15 reponse文件下载路径
- linux cpu驱动程序,Linux kernel-CPU 调频
- 计算机系统基础栈,计算机系统基础 (一): 程序的表示, 转换与链接 (第七周小测验)...
- mysql一般要配置的几个小节及选项是_MySQL - 必知必会(下)
- 怎么把python从c盘移到d盘_如何转移Pycharm的设置或者缓存到其他盘
- era5数据内容说明_接口测试:A04_HttpRunner通用_02_提取数据_01_extract关键字
- FISCO BCOS同步模块的优化策略