4523: [Cqoi2016]路由表

Time Limit: 30 Sec  Memory Limit: 512 MB
Submit: 155  Solved: 98
[Submit][Status][Discuss]

Description

路由表查找是路由器在转发IP报文时的重要环节。通常路由表中的表项由目的地址、掩码、下一跳(Next Hop)地址和其他辅助信息组成。例如:

当路由器收到一个IP报文时,会将报文中的目的IP地址与路由表中的表项逐条进行比较,选择匹配且最明确的表项,将报文转发给该表项中指定的下一跳。
匹配的过程是将报文中的目的地址和表项中的目的地址分别转为二进制串,再查看表项中的掩码长度,若掩码长度为x,则将两个二进制串的前x位进行比较,如果相同则认为匹配。
所谓最明确是指在有多个表项匹配时,总是掩码长度最大的表项。也可以理解为匹配的二进制位最多的项。
IP地址转为二进制串的操作是把地址中4个整数(一定在y到255的范围内)分别转为8位二进制数,再顺序拼接起来,得到一个32位的二进制串。例如,192.168.1.253转为二进制串后为11000000 10101000 00000001 11111101
我们以报文的目的地址为8.8.8.8为例,说明其在上述路由表的匹配过程。
 
上表将地址均转为二进制串,并用红色标记出待比较的位(由掩码长度决定)。将红色部分与报文中的目的地址比较,可知0.0.0.0/1、8.8.8.0/24、8.8.8.8、32均能够匹配。路由器从中选取掩码长度最长(/32)的表项8.8.8.8/32,将报文转发给其对应的下一跳地址192.168.1.253。
在实际的核心路由器中,路由表通常较大(现在互联网的全局路由表已经接60万条记录),并且会随着新接入设备不断扩张。为了分析路由表变化对转发产生的影响,网络工程师想要知道一段时间内某个IP地址的路由表项选择发生了多少次变化(变化是指由于最明确匹配等因素选择了不同的表项,不考虑下一跳地址)。

Input

第一行为整数M,表示共有M次操作。接下来M行,每行描述一次操作。操作有两种:
A D/L
其中.为一个IP地址,G为整数(1≤L≤32)。添加一条表项至路由表,其目的地址为
D掩码长度为L。下一跳地址由于没有用到,故省略。
Q D a b
其中D为一个IP地址,a,b为正整数(a≤b)。查询从第a次至第b次添加表项期间(含
a、b),目的地址D的路由表项选择发生了多少次变化。保证查询时表中至少有b个表项。
N<=10^6数据保证不会重复添加目的地址和掩码长度都相同的表项。

Output

包含若干行,每行仅有一个整数,依次对应每个查询操作。

Sample Input


A 128.0.0.0/

A 128.0.0.0/

A 100.200.20.0/

A 241.170.96.0/

A 74.128.0.0/

A 193.24.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 192.0.0.0/

Q 192.0.0.13  

A 128.0.0.0/

Q 128.0.0.15  

A 74.0.0.0/

A 96.0.0.0/

A 193.24.0.0/

A 100.192.0.0/

A 128.0.0.0/

A 128.0.0.0/

Q 128.0.0.4  

A 192.0.0.0/

A 192.0.0.0/

Q 128.0.0.7  

A 128.0.0.0/

A 74.128.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 74.128.0.0/

Q 128.0.0.9  

A 96.0.0.0/

A 64.0.0.0/

A 74.0.0.0/

A 100.192.0.0/

A 128.0.0.0/

A 193.24.0.0/

Q 128.0.0.3  

Q 74.128.0.12  

A 128.0.0.0/

A 193.24.0.0/

Q 128.0.0.7  

A 192.0.0.0/

Q 128.0.0.3  

A 100.192.0.0/

Q 241.170.96.2  

Q 100.192.0.4  

A 74.0.0.0/

A 192.0.0.0/

A 128.0.0.0/

Q 74.128.0.5  

Q 74.128.0.6  

A 192.0.0.0/

A 100.192.0.0/

Q 128.0.0.6  

A 100.128.0.0/

Q 74.0.0.13  

A 100.0.0.0/

A 96.0.0.0/

A 128.0.0.0/

A 192.0.0.0/

A 240.0.0.0/

Q 100.0.0.1  

A 128.0.0.0/

Q 128.0.0.6  

A 193.24.0.0/

Q 96.0.0.15  

A 3.220.186.0/

A 192.0.0.0/

Q 128.0.0.13  

A 74.0.0.0/

A 232.0.0.0/

Q 128.0.0.11  

A 192.0.0.0/

A 100.128.0.0/

Q 3.220.186.4  

A 64.0.0.0/

Q 100.0.0.5  

A 96.0.0.0/

A 192.0.0.0/

Q 128.0.0.3  

A 128.0.0.0/

A 100.0.0.0/

A 193.24.0.0/

A 192.0.0.0/

Q 128.0.0.0  

A 96.0.0.0/

Q 128.0.0.10  

Q 100.0.0.5  

A 96.0.0.0/

A 100.192.0.0/

A 128.0.0.0/

A 192.0.0.0/

A 128.0.0.0/

Q 64.0.0.0  

Q 96.0.0.0  

A 192.0.0.0/

A 100.0.0.0/

A 193.24.0.0/

Q 100.128.0.6  

Q 192.0.0.2  

Q 128.0.0.2  

A 0.0.0.0/

A 100.192.0.0/

A 192.0.0.0/

Q 74.128.0.11  

A 100.128.0.0/

A 192.0.0.0/

A 74.0.0.0/

Q 193.24.0.12  

A 163.214.12.64/

A 232.0.0.0/

A 100.128.0.0/

A 192.0.0.0/

A 100.0.0.0/

A 128.0.0.0/

Q 64.0.0.5  

A 74.0.0.0/

A 128.0.0.0/

Q 193.24.0.14  

A 0.0.0.0/

A 74.0.0.0/

Q 100.192.0.6  

A 100.192.0.0/

Q 192.0.0.6  

Q 193.24.0.0  

A 96.0.0.0/

A 128.0.0.0/

A 193.24.0.0/

A 192.0.0.0/

Q 74.0.0.8  

A 100.0.0.0/

A 100.192.0.0/

Q 128.0.0.4  

A 193.24.0.0/

Q 128.0.0.4  

Q 128.0.0.4  

A 192.0.0.0/

A 100.192.0.0/

Q 193.24.0.12  

Q 96.0.0.10  

Q 241.170.96.10  

Q 128.0.0.3  

Q 3.220.186.2  

Q 192.0.0.11  

A 240.0.0.0/

A 128.0.0.0/

A 193.24.0.0/

A 64.0.0.0/

A 0.0.0.0/

Q 192.0.0.10  

Q 128.0.0.3  

A 193.24.0.0/

A 8.0.0.0/

A 96.0.0.0/

A 128.0.0.0/

Q 74.128.0.8  

A 232.0.0.0/

Q 74.128.0.13  

A 100.128.0.0/

A 100.128.0.0/

A 192.0.0.0/

A 192.0.0.0/

A 0.0.0.0/

Q 193.24.0.14  

A 192.0.0.0/

Q 100.0.0.3  

A 100.192.0.0/

A 96.0.0.0/

A 240.0.0.0/

A 8.0.0.0/

A 0.0.0.0/

A 100.200.0.0/

Q 192.0.0.12  

A 0.0.0.0/

A 8.0.0.0/

A 0.0.0.0/

Q 128.0.0.0  

A 100.0.0.0/

Q 232.0.0.14  

Q 74.0.0.1  

A 240.0.0.0/

A 100.128.0.0/

Q 8.0.0.11  

A 100.128.0.0/

A 8.0.0.0/

A 128.0.0.0/

A 193.24.0.0/

Q 74.0.0.12  

Q 100.192.0.9  

A 0.0.0.0/

A 0.0.0.0/

Q 232.0.0.12  

Q 192.0.0.5  

A 193.0.0.0/

A 240.0.0.0/

Q 0.0.0.2  

Q 128.0.0.6  

A 100.192.0.0/

Q 192.0.0.3  

A 8.0.0.0/

Q 192.0.0.6  

Q 96.0.0.0  

A 0.0.0.0/

A 192.0.0.0/

Q 74.0.0.9  

A 100.128.0.0/

Q 100.192.0.14  

Q 100.200.20.13  

Q 100.192.0.3  

Q 100.128.0.2  

Q 8.0.0.0  

A 160.0.0.0/

Q 100.0.0.8  

A 0.0.0.0/

A 100.192.0.0/

Q 128.0.0.8  

Q 0.0.0.15  

A 8.0.0.0/

A 100.192.0.0/

Q 128.0.0.12  

Q 128.0.0.4  

A 96.0.0.0/

Q 193.24.0.13  

Q 240.0.0.5  

A 100.128.0.0/

Q 193.0.0.10  

A 100.128.0.0/

A 3.192.0.0/

A 224.0.0.0/

Q 0.0.0.7  

Q 100.128.0.1  

Q 193.24.0.2  

Q 100.200.20.3  

A 74.0.0.0/

A 193.0.0.0/

Q 193.24.0.2  

Q 128.0.0.6  

A 213.251.112.0/

A 241.160.0.0/

A 96.0.0.0/

A 100.0.0.0/

A 96.0.0.0/

Q 192.0.0.8  

Q 96.0.0.12  

A 100.128.0.0/

A 193.0.0.0/

Q 96.0.0.1  

Q 100.192.0.13  

A 192.0.0.0/

Q 193.24.0.4  

A 100.0.0.0/

A 100.128.0.0/

Q 241.170.96.7  

A 100.128.0.0/

Q 100.128.0.1  

Q 192.0.0.13  

A 192.0.0.0/

Q 96.0.0.2  

A 74.0.0.0/

A 100.192.0.0/

Q 193.24.0.12  

A 96.0.0.0/

A 74.128.0.0/

A 0.0.0.0/

A 74.0.0.0/

A 193.0.0.0/

Q 100.0.0.2  

A 96.0.0.0/

A 193.0.0.0/

Q 100.192.0.7  

A 100.0.0.0/

Q 74.0.0.14  

A 96.0.0.0/

Q 100.128.0.7  

Q 163.214.12.69  

Q 128.0.0.1  

A 96.0.0.0/

A 74.0.0.0/

A 192.0.0.0/

Q 100.0.0.3  

Q 192.0.0.8  

Q 74.0.0.4  

A 74.128.0.0/

Q 0.0.0.1  

Q 241.160.0.1  

A 224.0.0.0/

Q 192.0.0.5  

Q 232.0.0.10  

A 192.0.0.0/

Q 100.192.0.1  

A 100.0.0.0/

A 100.0.0.0/

A 64.0.0.0/

A 8.0.0.0/

Q 100.0.0.14  

A 74.0.0.0/

A 100.128.0.0/

A 163.214.12.0/

A 0.0.0.0/

A 0.0.0.0/

A 72.0.0.0/

A 193.24.0.0/

Q 100.128.0.1  

A 193.0.0.0/

A 100.128.0.0/

A 232.0.0.0/

Q 100.128.0.10  

A 128.0.0.0/

Q 192.0.0.13  

A 96.0.0.0/

Q 128.0.0.13  

Q 128.0.0.5  

A 0.0.0.0/

A 193.88.0.0/

A 0.0.0.0/

A 100.192.0.0/

A 213.240.0.0/

A 100.0.0.0/

A 72.0.0.0/

A 3.192.0.0/

A 74.0.0.0/

A 100.192.0.0/

Q 96.0.0.9  

Q 192.0.0.7  

A 160.0.0.0/

Q 0.0.0.2  

Q 100.128.0.12  

Q 192.0.0.4  

Q 100.0.0.14  

A 232.0.0.0/

A 0.0.0.0/

A 72.0.0.0/

Q 128.0.0.2  

Q 100.192.0.5  

Q 192.0.0.12  

Q 193.0.0.8  

Q 74.128.0.4  

A 0.0.0.0/

A 0.0.0.0/

Q 100.128.0.11  

A 16.0.0.0/

Q 192.0.0.11  

A 232.0.0.0/

A 74.128.0.0/

A 232.0.0.0/

A 241.160.0.0/

A 96.0.0.0/

A 74.0.0.0/

A 162.0.0.0/

A 100.192.0.0/

A 193.24.0.0/

A 64.0.0.0/

A 193.0.0.0/

A 155.49.0.0/

Q 128.0.0.4  

Q 193.24.0.2  

A 240.0.0.0/

Q 100.200.0.5  

A 74.128.0.0/

A 193.16.0.0/

Q 74.0.0.4  

Q 128.0.0.0  

A 0.0.0.0/

A 72.0.0.0/

A 120.0.0.0/

A 0.0.0.0/

A 100.0.0.0/

A 0.0.0.0/

Q 192.0.0.11  

Q 100.0.0.2  

Q 193.24.0.2  

Q 74.0.0.6  

A 96.0.0.0/

A 232.0.0.0/

A 128.0.0.0/

A 128.0.0.0/

A 74.128.0.0/

Q 128.0.0.10  

A 74.0.0.0/

Q 100.192.0.5  

Q 100.0.0.8  

A 16.0.0.0/

A 193.0.0.0/

Q 72.0.0.0  

Q 240.0.0.3  

A 224.0.0.0/

A 0.0.0.0/

A 100.128.0.0/

A 100.192.0.0/

A 3.220.186.0/

Q 193.24.0.0  

A 193.24.0.0/

Q 72.0.0.1  

Q 16.0.0.10  

A 240.0.0.0/

A 72.0.0.0/

A 16.0.0.0/

Q 3.192.0.3  

A 232.0.0.0/

A 8.0.0.0/

A 8.0.0.0/

Q 224.0.0.5  

Q 96.0.0.4  

A 16.0.0.0/

Q 100.0.0.11  

A 213.240.0.0/

A 96.0.0.0/

Q 74.128.0.13  

Q 100.192.0.5  

A 193.0.0.0/

Q 193.0.0.0  

A 74.0.0.0/

Q 232.0.0.0  

A 179.11.167.64/

Q 192.0.0.0  

A 193.0.0.0/

Q 128.0.0.13  

Q 72.0.0.9  

Q 100.192.0.0  

A 224.0.0.0/

Q 96.0.0.15  

Q 16.0.0.5  

Q 193.24.0.3  

Q 100.128.0.0  

Q 74.0.0.12  

A 162.0.0.0/

Q 192.0.0.12  

A 241.160.0.0/

Q 193.24.0.2  

A 100.0.0.0/

A 241.170.96.0/

A 100.192.0.0/

A 179.11.0.0/

A 100.200.20.0/

A 193.0.0.0/

A 224.0.0.0/

Q 232.0.0.5  

Q 128.0.0.1  

A 3.220.160.0/

Q 74.0.0.4  

A 0.0.0.0/

Q 192.0.0.5  

A 3.192.0.0/

A 72.0.0.0/

A 160.0.0.0/

Q 128.0.0.12  

A 224.0.0.0/

A 179.11.0.0/

Q 192.0.0.14  

A 213.0.0.0/

A 178.0.0.0/

A 240.0.0.0/

A 100.0.0.0/

Q 128.0.0.2  

Q 100.128.0.8  

A 74.128.0.0/

Q 100.128.0.9  

A 74.128.0.0/

A 240.0.0.0/

Q 240.0.0.2  

A 232.0.0.0/

A 74.0.0.0/

Q 8.0.0.11  

Q 224.0.0.2  

Q 100.192.0.5  

A 72.0.0.0/

A 72.0.0.0/

Q 193.0.0.7  

A 74.0.0.0/

Q 100.128.0.14  

A 192.0.0.0/

A 240.0.0.0/

A 240.0.0.0/

A 100.0.0.0/

A 96.0.0.0/

A 224.0.0.0/

Q 100.192.0.1  

Q 8.0.0.8  

Q 74.0.0.15  

Q 0.0.0.4  

A 247.48.0.0/

A 162.0.0.0/

A 240.0.0.0/

Q 96.0.0.11  

A 72.0.0.0/

Q 74.0.0.12  

A 74.128.0.0/

A 100.0.0.0/

Q 100.0.0.2  

A 96.0.0.0/

Q 72.0.0.12  

Q 96.0.0.9  

A 16.0.0.0/

A 64.0.0.0/

Q 213.240.0.1  

A 100.128.0.0/

A 100.0.0.0/

Q 96.0.0.10  

A 120.0.0.0/

A 224.0.0.0/

Q 74.0.0.11  

A 224.0.0.0/

A 232.0.0.0/

A 0.0.0.0/

Q 16.0.0.2  

Q 0.0.0.14  

A 74.0.0.0/

A 232.0.0.0/

Q 128.0.0.7  

Q 96.0.0.6  

A 16.0.0.0/

A 192.0.0.0/

A 20.30.128.0/

A 100.0.0.0/

A 179.11.0.0/

Q 179.11.0.6  

A 224.0.0.0/

Q 213.240.0.1  

Q 74.0.0.1  

Q 192.0.0.10  

A 100.192.0.0/

A 100.0.0.0/

A 224.0.0.0/

Q 72.0.0.7  

Q 100.192.0.5  

A 74.0.0.0/

Q 74.0.0.6  

Q 232.0.0.10  

A 74.128.0.0/

A 72.0.0.0/

A 74.128.0.0/

A 224.0.0.0/

A 191.11.64.0/

A 224.0.0.0/

Q 224.0.0.13  

A 8.0.0.0/

A 100.192.0.0/

Q 193.16.0.2  

Q 0.0.0.15  

A 16.0.0.0/

A 241.160.0.0/

Q 100.0.0.1  

A 72.0.0.0/

A 118.101.156.224/

A 100.200.0.0/

Q 100.0.0.7  

A 232.0.0.0/

Q 100.0.0.11  

Q 8.0.0.13  

A 20.30.128.0/

A 213.0.0.0/

A 8.0.0.0/

Q 100.128.0.5  

A 128.0.0.0/

A 3.220.160.0/

A 3.192.0.0/

A 213.0.0.0/

A 240.0.0.0/

Q 100.192.0.0  

Q 96.0.0.9  

Q 100.128.0.11  

A 74.0.0.0/

A 62.188.0.0/

A 162.0.0.0/

Q 128.0.0.9  

A 193.0.0.0/

A 96.0.0.0/

A 0.0.0.0/

Q 128.0.0.6  

A 232.0.0.0/

A 0.0.0.0/

Q 192.0.0.0  

A 64.0.0.0/

A 96.0.0.0/

Q 193.24.0.0  

A 100.128.0.0/

Q 193.24.0.13  

A 241.160.0.0/

Q 0.0.0.9  

A 8.0.0.0/

Q 74.0.0.7  

A 100.192.0.0/

A 191.0.0.0/

A 96.0.0.0/

A 100.0.0.0/

Q 8.0.0.10  

A 213.0.0.0/

A 8.0.0.0/

A 3.0.0.0/

A 118.101.128.0/

Q 74.128.0.14  

A 0.0.0.0/

A 241.170.96.0/

Q 74.128.0.8  

Q 20.30.128.6  

A 191.0.0.0/

A 213.0.0.0/

A 64.0.0.0/

Q 179.11.0.12  

Q 0.0.0.11  

Q 120.0.0.6  

Q 8.0.0.6  

A 64.0.0.0/

Q 96.0.0.15  

A 16.0.0.0/

A 179.11.0.0/

A 160.0.0.0/

A 74.0.0.0/

Q 192.0.0.8  

A 224.0.0.0/

A 8.0.0.0/

Q 128.0.0.11  

A 72.0.0.0/

Q 224.0.0.11  

A 240.0.0.0/

A 0.0.0.0/

Q 96.0.0.13  

A 193.24.0.0/

A 192.0.0.0/

A 3.208.0.0/

A 179.0.0.0/

Q 240.0.0.2  

A 64.0.0.0/

Q 240.0.0.6  

A 232.0.0.0/

A 247.48.0.0/

A 193.0.0.0/

A 160.0.0.0/

A 16.0.0.0/

Q 128.0.0.8  

Q 128.0.0.11  

Q 100.0.0.2  

Q 224.0.0.0  

Q 96.0.0.6  

A 20.0.0.0/

A 100.128.0.0/

A 224.0.0.0/

Q 128.0.0.5  

Q 74.0.0.14  

Q 100.128.0.14  

Q 240.0.0.13  

Q 160.0.0.2  

A 8.0.0.0/

Q 193.0.0.14  

A 16.0.0.0/

A 192.0.0.0/

A 74.0.0.0/

A 74.0.0.0/

A 241.160.0.0/

Q 100.0.0.14  

Q 162.0.0.14  

Q 74.128.0.3  

Q 128.0.0.3  

A 72.0.0.0/

A 122.38.0.0/

A 240.0.0.0/

Q 0.0.0.14  

Q 213.0.0.13  

A 213.0.0.0/

A 232.0.0.0/

A 232.0.0.0/

Q 74.0.0.4  

A 20.0.0.0/

Q 16.0.0.2  

Q 100.128.0.7  

A 94.3.0.0/

Q 240.0.0.10  

A 163.208.0.0/

A 95.0.0.0/

Q 224.0.0.1  

A 232.0.0.0/

Q 72.0.0.3  

A 160.0.0.0/

A 191.11.0.0/

A 240.0.0.0/

A 163.214.0.0/

A 72.217.252.176/

A 241.160.0.0/

Q 192.0.0.4  

A 20.0.0.0/

A 120.0.0.0/

Q 0.0.0.6  

Q 100.192.0.1  

A 240.0.0.0/

Q 128.0.0.12  

A 74.128.0.0/

A 232.0.0.0/

A 96.0.0.0/

Q 192.0.0.15  

A 160.0.0.0/

A 179.0.0.0/

A 74.128.0.0/

A 8.0.0.0/

Q 74.128.0.6  

Q 128.0.0.10  

A 240.0.0.0/

Q 100.192.0.11  

A 8.0.0.0/

Q 162.0.0.12  

Q 100.192.0.7  

Q 128.0.0.9  

A 64.0.0.0/

Q 3.208.0.9  

Q 178.0.0.0  

Q 72.0.0.10  

A 72.0.0.0/

Q 128.0.0.14  

A 0.0.0.0/

A 151.48.12.96/

A 191.0.0.0/

Q 74.128.0.14  

Q 74.0.0.7  

A 100.0.0.0/

A 179.11.167.64/

A 8.0.0.0/

A 3.128.0.0/

A 193.88.0.0/

Q 120.0.0.1  

A 120.0.0.0/

Q 94.3.0.8  

Q 100.128.0.8  

Q 240.0.0.5  

Q 162.0.0.14  

A 240.0.0.0/

A 160.0.0.0/

A 213.248.0.0/

Q 16.0.0.6  

A 64.0.0.0/

Q 100.192.0.8  

A 224.0.0.0/

Q 100.192.0.0  

A 120.0.0.0/

A 103.119.244.96/

A 240.0.0.0/

Q 232.0.0.1  

Q 96.0.0.8  

Q 224.0.0.13  

A 160.0.0.0/

A 241.160.0.0/

A 64.0.0.0/

A 160.0.0.0/

A 100.200.0.0/

Q 179.11.0.4  

Q 193.24.0.4  

A 96.0.0.0/

A 16.0.0.0/

Q 100.192.0.4  

A 8.0.0.0/

A 163.208.0.0/

A 178.0.0.0/

A 160.0.0.0/

Q 191.11.64.4  

Q 224.0.0.15  

Q 192.0.0.9  

Q 193.24.0.15  

A 151.48.8.0/

A 224.0.0.0/

A 213.128.0.0/

A 191.0.0.0/

A 74.128.0.0/

A 120.0.0.0/

Q 193.24.0.1  

Q 8.0.0.11  

Q 192.0.0.8  

Q 192.0.0.12  

Q 192.0.0.0  

A 151.48.12.0/

A 3.192.0.0/

Q 240.0.0.10  

A 8.0.0.0/

A 120.0.0.0/

A 162.0.0.0/

A 64.0.0.0/

Q 100.0.0.15  

A 118.101.128.0/

A 120.0.0.0/

A 179.11.0.0/

A 240.0.0.0/

A 224.0.0.0/

A 247.48.0.0/

A 240.0.0.0/

A 20.30.128.0/

A 224.0.0.0/

A 213.0.0.0/

Q 72.0.0.14  

A 134.161.96.0/

A 193.88.0.0/

A 160.0.0.0/

Q 240.0.0.14  

A 160.0.0.0/

Q 74.128.0.13  

Q 0.0.0.8  

Q 0.0.0.0  

Q 74.0.0.2  

Q 0.0.0.1  

A 213.0.0.0/

A 193.0.0.0/

Q 179.11.167.78  

A 160.0.0.0/

A 179.11.0.0/

A 162.0.0.0/

A 3.192.0.0/

Q 128.0.0.6  

A 191.0.0.0/

A 191.0.0.0/

Q 64.0.0.4  

A 215.172.0.0/

Q 0.0.0.6  

A 112.0.0.0/

A 224.0.0.0/

A 162.0.0.0/

Q 162.0.0.15  

A 240.0.0.0/

A 224.0.0.0/

A 64.0.0.0/

A 100.128.0.0/

A 240.0.0.0/

Q 241.170.96.14  

A 213.0.0.0/

A 3.0.0.0/

A 212.0.0.0/

Q 193.0.0.4  

Q 74.128.0.7  

Q 100.0.0.1  

Q 94.3.0.7  

A 120.0.0.0/

A 3.0.0.0/

Q 72.0.0.14  

A 232.0.0.0/

A 100.200.0.0/

A 20.30.128.0/

Q 179.11.0.0  

A 64.0.0.0/

Q 64.0.0.15  

A 215.172.0.0/

Q 160.0.0.14  

A 64.0.0.0/

Q 213.0.0.15  

A 8.0.0.0/

A 224.0.0.0/

Q 178.0.0.12  

A 162.0.0.0/

A 100.200.16.0/

A 3.128.0.0/

A 191.0.0.0/

Q 224.0.0.15  

Q 74.0.0.12  

Q 193.0.0.10  

A 213.0.0.0/

A 3.128.0.0/

Q 224.0.0.2  

Q 193.88.0.15  

A 100.0.0.0/

A 120.0.0.0/

Q 240.0.0.12  

A 191.0.0.0/

Q 72.0.0.8  

A 241.160.0.0/

Q 0.0.0.14  

A 242.128.0.0/

Q 16.0.0.8  

Q 160.0.0.14  

A 120.0.0.0/

A 72.0.0.0/

A 232.0.0.0/

Q 100.0.0.14  

A 120.0.0.0/

A 8.0.0.0/

A 120.0.0.0/

Q 96.0.0.4  

A 179.0.0.0/

A 151.0.0.0/

Q 100.192.0.0  

Q 16.0.0.4  

A 3.192.0.0/

A 185.212.64.0/

Q 193.24.0.7  

A 162.0.0.0/

Q 193.24.0.8  

A 224.0.0.0/

A 120.0.0.0/

A 155.0.0.0/

Q 191.0.0.12  

Q 100.0.0.3  

A 224.0.0.0/

Q 8.0.0.13  

A 162.0.0.0/

Q 0.0.0.0  

A 151.48.8.0/

A 74.128.0.0/

A 100.0.0.0/

A 179.11.0.0/

Q 179.11.0.1  

A 193.0.0.0/

A 160.0.0.0/

Q 0.0.0.0  

Q 232.0.0.0  

Q 100.0.0.8  

A 191.0.0.0/

A 176.0.0.0/

A 100.128.0.0/

Q 96.0.0.11  

Q 74.128.0.15  

A 160.0.0.0/

A 100.200.0.0/

A 72.0.0.0/

A 212.0.0.0/

A 162.0.0.0/

A 160.0.0.0/

A 120.0.0.0/

A 160.0.0.0/

Q 240.0.0.6  

Q 100.192.0.14  

A 191.11.64.0/

A 100.200.20.0/

A 100.0.0.0/

A 160.0.0.0/

A 193.16.0.0/

A 163.214.0.0/

A 179.0.0.0/

A 232.0.0.0/

Q 224.0.0.11  

A 151.48.8.0/

A 213.0.0.0/

Q 192.0.0.8  

A 185.208.0.0/

Q 224.0.0.3  

A 112.0.0.0/

Q 241.160.0.11  

Q 118.101.128.7  

A 193.24.0.0/

A 193.24.0.0/

A 72.0.0.0/

Q 100.128.0.1  

Q 191.0.0.3  

Q 192.0.0.3  

A 213.0.0.0/

A 74.128.0.0/

Q 162.0.0.9  

A 3.192.0.0/

Q 232.0.0.4  

Q 213.0.0.14  

Q 163.214.0.1  

A 16.0.0.0/

A 193.0.0.0/

A 213.0.0.0/

Q 16.0.0.14  

Q 163.214.0.15  

Q 103.119.244.96  

Q 100.192.0.14  

A 179.0.0.0/

A 100.200.0.0/

A 96.0.0.0/

Q 163.214.0.5  

Q 0.0.0.9  

A 72.0.0.0/

A 16.160.0.0/

Q 128.0.0.14  

A 191.0.0.0/

A 232.0.0.0/

Q 0.0.0.14  

A 208.0.0.0/

A 191.0.0.0/

Q 16.0.0.1  

Q 3.192.0.7  

A 120.0.0.0/

A 72.0.0.0/

A 16.0.0.0/

Q 74.128.0.0  

A 100.200.0.0/

Q 100.192.0.2  

A 120.0.0.0/

A 64.0.0.0/

A 213.128.0.0/

A 16.0.0.0/

Q 72.0.0.1  

Q 215.172.0.10  

A 145.16.0.0/

A 16.0.0.0/

Q 64.0.0.11  

A 162.0.0.0/

Q 160.0.0.8  

Q 96.0.0.15  

Q 192.0.0.4  

A 155.0.0.0/

A 64.0.0.0/

A 3.128.0.0/

A 215.128.0.0/

Q 232.0.0.7  

A 160.0.0.0/

A 241.0.0.0/

A 0.0.0.0/

Q 240.0.0.14  

Q 240.0.0.0  

A 144.0.0.0/

Q 3.192.0.0  

Q 193.24.0.6  

A 96.0.0.0/

A 62.170.234.0/

Sample Input

Sample Output


Sample Output

HINT

2.route
对于一次查询的一种理解方式是:无视其它所有查询操作,只看添加操作。先清空路由表,然后执行第1到a-1次添加操作。之后再统计第a到b次添加操作过程中,统计匹配改变的次数
数据范围:
设一条表项的掩码长度为L,数据保证将目的地址转为二进制串后,末尾的32-L位均为0

Source

Solution

BZOJ良心数据...

读入随便搞搞,按照掩码建Trie树,在末尾标记时间戳

对于每个询问,在Tri树上跑,把跑到的拿出来,随便搞搞统计一下答案...实际上可以用单调栈高效一点

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int m,Ip[];
#define maxn 1000100
int ch[maxn][],pos[maxn],rt=,cnt=,sz=,ti=;
void Insert(int *ip,int l,int x)
{
int now=rt;
for (int i=; i<=l; i++)
{
if (!ch[now][ip[i]])
ch[now][ip[i]]=++sz;
now=ch[now][ip[i]];
}
pos[now]=x;
}
struct Node
{
int a,b;
bool operator < (const Node & A) const
{return a<A.a;}
};
Node stack[maxn]; int top;
int Query(int *ip,int L,int R)
{
int now=rt,re=,m=-; top=;
for (int i=; i<=; i++)
{
if (!ch[now][ip[i]]) break;
now=ch[now][ip[i]];
if (pos[now] && pos[now]<=R)
stack[++top]=Node{pos[now],i+};
}
sort(stack+,stack+top+);
for (int i=; i<=top; i++)
{
Node now=stack[i];
if (m<now.b) {m=now.b; if (now.a>=L) re++;}
}
return re;
}
int main()
{
scanf("%d",&m);
for (int i=; i<=m; i++)
{
char opt[]; scanf("%s",opt);
if (opt[]=='A')
{
ti++; int ip,len=,l;
memset(Ip,,sizeof(Ip));
for (int j=; j<=; j++)
{
scanf("%d.",&ip);
for (int k=; k>=; k--)
Ip[++len]=(&(ip>>k)); }
scanf("%d/",&ip);
for (int k=; k>=; k--) Ip[++len]=(&(ip>>k));
scanf("%d",&l);
//for (int j=1; j<=len; j++) printf("%d",Ip[j]); puts("");
Insert(Ip,l,ti);
}
if (opt[]=='Q')
{
int ip,len=,l,r;
memset(Ip,,sizeof(Ip));
for (int j=; j<=; j++)
{
scanf("%d.",&ip);
for (int k=; k>=; k--)
Ip[++len]=(&(ip>>k));
}
scanf("%d",&ip);
for (int k=; k>=; k--) Ip[++len]=(&(ip>>k));
scanf("%d %d",&l,&r);
//for (int j=1; j<=len; j++) printf("%d",Ip[j]); puts("");
printf("%d\n",Query(Ip,l,r));
}
}
return ;
}

这题写了近1h30min,也是没救了...不过轻松1A了....

【BZOJ-4523】路由表 Trie树 + 乱搞的更多相关文章

  1. BZOJ 4523 [Cqoi2016]路由表 Trie树

    Trie树的应用题目. 在线建立一棵01 Trie树,然后按照要求用询问在上面跑,用单调栈维护答案即可. #include<iostream> #include<cstdio> ...

  2. [bzoj1067][SCOI2007]降雨量——线段树+乱搞

    题目大意 传送门 题解 我国古代有一句俗话. 骗分出奇迹,乱搞最神奇! 这句话在这道题上得到了鲜明的体现. 我的方法就是魔改版线段树,乱搞搞一下,首先借鉴了黄学长的建树方法,直接用一个节点维护年份的区 ...

  3. 【BZOJ4523】[Cqoi2016]路由表 Trie树模拟

    [BZOJ4523][Cqoi2016]路由表 Description 路由表查找是路由器在转发IP报文时的重要环节.通常路由表中的表项由目的地址.掩码.下一跳(Next Hop)地址和其他辅助信息组 ...

  4. 洛谷P5211 [ZJOI2017]字符串(线段树+乱搞)

    题面 传送门 题解 为什么大佬们全都是乱搞的--莫非这就是传说中的暴力能进队,乱搞能AC-- 似乎有位大佬能有纯暴力+玄学优化\(AC\)(不算上\(uoj\)的\(Hack\)数据的话--这要是放到 ...

  5. bzoj 4260 REBXOR —— Trie树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260 用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可: 注意要先加入 ...

  6. 【Luogu】P2221高速公路(线段树乱搞)

    题目链接 这题……我从一开始就想歪了qwq. 为了缅怀逝去的一小时我就把我的30分暴力思路放上来. 首先我们观察枚举的区间.假设我们要枚举的范围是1~5之间的四条路,为了方便我们把它们叫做abcd. ...

  7. 【NOI2013模拟】坑带的树(仙人球的同构+圆方树乱搞+计数+HASH)

    [NOI2013模拟]坑带的树 题意: 求\(n\)个点,\(m\)条边的同构仙人球个数. \(n\le 1000\) 这是一道怎么看怎么不可做的题. 这种题,肯定是圆方树啦~ 好,那么首先转为广义圆 ...

  8. 【BZOJ】2456 mode(乱搞)

    Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...

  9. bzoj 4900 [CTSC2017]密钥 模拟+乱搞

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4900 #include<cstring> #include<cmath&g ...

随机推荐

  1. 【MVC】AJAX+PartialView实现商城首页的楼层加载

    使用AJAX实现楼层加载的例子已经非常多,但是html代码大都是手动拼接的,编写不便,而且难以维护. 下面就使用AJAX+PartialView来实现 1.html代码 <!--楼层1开始--& ...

  2. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

  3. Asp.net WebApi Put模式调用,“HTTP 错误 405.0 - Method Not Allowed”解决方法

    IIS10.0在部署了WebAPI之后,默认是不支持Put模式调用的.需要按照下面方法启用. 步骤一:在IIS管理界面要支持Put模式的IIS站点,选择 "功能视图". 步骤二:选 ...

  4. ios蓝牙开发(四)app作为外设被连接的实现-转发

    代码下载: 原博客中大部分示例代码都上传到了github,地址是:https://github.com/coolnameismy/demo. 再上一节说了app作为central连接periphera ...

  5. oracle 11g的企业管理器

    oracle 11g的企业管理器不同于其他版本,它是B/S的,默认登录为:https://localhost:1158/em,但我试了IE8跟360浏览器都不行,谷歌浏览器是可以访问的

  6. Spire.Doc组件读取与写入Word

    之前写了一篇开源组件DocX读写word的文章,当时时间比较匆忙选了这个组件,使用过程中还是有些不便,不能提前定义好模版,插入Form表单域进行替换.最近无意中发现Spire.Doc组件功能很强大,目 ...

  7. Adblock Plus for firefox

    关于 Adblock Plus for firefox(以下简称 ABP)的一些笔记. 安装好 ABP,将如下代码保存为 html 文件,然后在 firefox 中打开: <p id=" ...

  8. dev gridcontrol纵向合并单元格设置

    1.要设置gridcontrol中指定列(columns中选中指定列)的AllowMerge属性为true; 2.要设置gridview中AllowCellMerge的属性为true; 3.如果只合并 ...

  9. mutex与semaphore的区别

    网摘1:Mutex 的发音是 /mjuteks/ ,其含义为互斥(体),这个词是Mutual Exclude的缩写.Mutex在计算机中是互斥也就是排他持有的一种方式,和信号量-Semaphore有可 ...

  10. IIS7.5开启GZip压缩

    在IIS7.5选择要开启GZip压缩的网站,在功能视图中找到并双击"压缩"图标,在压缩界面中钩选"启用静态内容压缩"和"启用动态内容压缩", ...