loj2046 「CQOI2016」路由表
大傻逼trie树,更傻逼的是我这都没独立想出来,以后要少看题解,多多思考
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int m, cnt, s[20000005][2], now, orz[35], tag[20000005], faq;
char ss[15];
struct Node{
int idx, dis;
}nd[35];
void rn(int &x){
char ch=getchar();
x = 0;
while(ch<'0' || ch>'9') ch = getchar();
while(ch>='0' && ch<='9'){
x = x * 10 + ch - '0';
ch = getchar();
}
}
void insert(){
int uu, uv, uw, ux, uy;
rn(uu); rn(uv); rn(uw); rn(ux); rn(uy);
now++;
for(int i=7; i>=0; i--)
orz[24+i] = (uu>>i)&1;
for(int i=7; i>=0; i--)
orz[16+i] = (uv>>i)&1;
for(int i=7; i>=0; i--)
orz[8+i] = (uw>>i)&1;
for(int i=7; i>=0; i--)
orz[i] = (ux>>i)&1;
int u=0;
for(int i=31; 31-i+1<=uy; i--){
if(!s[u][orz[i]]) s[u][orz[i]] = ++cnt;
u = s[u][orz[i]];
}
tag[u] = now;
}
bool cmp(Node x, Node y){
return x.idx<y.idx;
}
int query(){
int uu, uv, uw, ux, uy, uz;
rn(uu); rn(uv); rn(uw); rn(ux); rn(uy); rn(uz);
for(int i=7; i>=0; i--)
orz[24+i] = (uu>>i)&1;
for(int i=7; i>=0; i--)
orz[16+i] = (uv>>i)&1;
for(int i=7; i>=0; i--)
orz[8+i] = (uw>>i)&1;
for(int i=7; i>=0; i--)
orz[i] = (ux>>i)&1;
faq = 0;
int u=0;
for(int i=31; i>=0; i--){
if(!s[u][orz[i]]) break;
u = s[u][orz[i]];
if(tag[u])
nd[++faq] = (Node){tag[u], 31-i+1};
}
sort(nd+1, nd+1+faq, cmp);
int re=0, maxdis=0;
for(int i=1; i<=faq; i++){
if(nd[i].idx>=uy && nd[i].idx<=uz && (i==1 || nd[i].dis>maxdis))
re++;
maxdis = max(maxdis, nd[i].dis);
}
return re;
}
int main(){
cin>>m;
while(m--){
scanf("%s", ss);
if(ss[0]=='A') insert();
else printf("%d\n", query());
}
return 0;
}
loj2046 「CQOI2016」路由表的更多相关文章
- 【LOJ】#2046. 「CQOI2016」路由表
题解 题面太长无法阅读系列-- 这里说的选择改变指的是在下面区间里碰上了一个更长的可匹配的地址,如果可匹配但是匹配长度没有当前的值大,那么不算改变 我们建一个可持久化的trie,查询的时候先在前\(a ...
- LoibreOJ 2042. 「CQOI2016」不同的最小割 最小割树 Gomory-Hu tree
2042. 「CQOI2016」不同的最小割 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- loj #2044. 「CQOI2016」手机号码
#2044. 「CQOI2016」手机号码 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- LibreOJ2044 - 「CQOI2016」手机号码
Portal Description 给出两个十一位数\(L,R\),求\([L,R]\)内所有满足以下两个条件的数的个数. 出现至少\(3\)个相邻的相同数字: 不能同时出现\(4\)和\(8\). ...
- LibreOJ2043 - 「CQOI2016」K 远点对
Portal Description 给出平面上的\(n(n\leq10^5)\)个整点,求在欧几里得距离下第\(k\)远的点对之间的距离. Solution k-d树+堆. 用小根堆维护当前找到的第 ...
- LibreOJ2045 - 「CQOI2016」密钥破解
Portal Description 给出三个正整数\(e,N,c(\leq2^{62})\).已知\(N\)能表示成\(p\cdot q\)的形式,其中\(p,q\)为质数.计算\(r=(p-1)( ...
- LibreOJ2042 - 「CQOI2016」不同的最小割
Portal Description 给出一个给出一个\(n(n\leq850)\)个点\(m(m\leq8500)\)条边的无向图.定义\(cut(s,t)\)等于\(s,t\)的最小割的容量,求在 ...
- 「CQOI2016」不同的最小割
「CQOI2016」不同的最小割 传送门 建出最小割树,把每一个点对的最小割抠出来 \(\text{unique}\) 一下就好了. 参考代码: #include <algorithm> ...
- 「CQOI2016」K 远点对
/* 考虑暴力 可以n ^ 2枚举点对 然后用一个容量为2k的小根堆来维护第k大 kd-tree呢就是来将这个暴力优化, 每次先找远的并且最远距离不如堆顶的话就不继续找下去 貌似挺难构造数据卡的 */ ...
随机推荐
- 淘宝H5移动端解决方案
详细:http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html ; (function(win, lib) { var doc ...
- 爱加密so保护简单脱壳测试
1. 最近研究so文件的保护,在网上搜索发现爱加密支持对so文件的保护,然后联系客户,本来是想让客户保护一个自己的so文件来做测试的,结果客户各种不愿意,说要签什么XX协议后才能给so保护,各种蛋 ...
- 分布式缓存memcached介绍,win7环境安装,常用命令set,get,delete,stats, java访问
一.memcached是什么? 二.memcached不互相通信的分布式 三.安装步骤 四.本文介绍的命令主要包括: 存入命令(Storage commands) 取回命令(Retrieval com ...
- echo -e的用法
root@bt:~# echo -e "HEAD /HTTP/1.0\n\n"HEAD /HTTP/1.0 root@bt:~# echo -e "HEAD /HTTP/ ...
- 巧用netsh命令实现端口转发(端口映射)不求人
好处:即时生效,随意修改删除,不影响其他ip映射 记事本保存为bat格式批量添加后,并查看映射: netsh interface portproxy add v4tov4 listenport=701 ...
- 卸载gitlab
一.停止gitlab sudo gitlab-ctl stop 二.卸载gitlab sudo rpm -e gitlab-ce三.查看gitlab进程 杀掉第一个守护进程 kill -9 4473 ...
- 渐变色在IE9以下包括IE9的使用
因为是不支持gradient的.所以需要使用如下属性,该属性不适用于safria浏览器,并且,#fff不可以简写,要写成#ffffff这样的形式 FILTER: progid:DXImageTrans ...
- Python判断一个数是否为小数
一.判断一个数是否为小数 1.有且仅有一个小数点 2.小数点的左边可能为正数或负数 3.小数点的右边为正数 二.实现代码 def is_float(str): if str.count('.') == ...
- Jmeter模拟http请求
一.获取用户信息(GET请求):http://hostname/getuser?userid=1 1.打开jmeter,创建一个线程组,再添加一个http请求Sampler 2.设置域名.路径.请求方 ...
- CVE-2018-4878
0x00前言 该漏洞影响 Flash Player 版本28.0.0.137以及之前的所有版本 0x01 poc Poc 这里只列出关键代码 public function triggeruaf() ...