【39.68%】【CF 714 C】Filya and Homework
1 second
256 megabytes
standard input
standard output
Today Sonya learned about long integers and invited all her friends to share the fun. Sonya has an initially empty multiset with integers. Friends give her t queries,
each of one of the following type:
- + ai —
add non-negative integer ai to
the multiset. Note, that she has a multiset, thus there may be many occurrences of the same integer. - - ai —
delete a single occurrence of non-negative integer ai from
the multiset. It's guaranteed, that there is at least one ai in
the multiset. - ? s — count the
number of integers in the multiset (with repetitions) that match some pattern s consisting of 0 and 1.
In the pattern,0 stands for the even digits, while 1 stands
for the odd. Integer x matches the pattern s,
if the parity of the i-th from the right digit in decimal notation matches the i-th
from the right digit of the pattern. If the pattern is shorter than this integer, it's supplemented with0-s from the left. Similarly, if the
integer is shorter than the pattern its decimal notation is supplemented with the 0-s from the left.
For example, if the pattern is s = 010, than integers 92, 2212, 50 and 414 match
the pattern, while integers 3, 110, 25 and 1030 do
not.
The first line of the input contains an integer t (1 ≤ t ≤ 100 000) —
the number of operation Sonya has to perform.
Next t lines provide the descriptions of the queries in order they appear in the input file. The i-th
row starts with a character ci —
the type of the corresponding operation. If ci is
equal to '+' or '-' then it's followed by a space and
an integer ai (0 ≤ ai < 1018)
given without leading zeroes (unless it's 0). If ci equals
'?' then it's followed by a space and a sequence of zeroes and onse, giving the pattern of length no more than 18.
It's guaranteed that there will be at least one query of type '?'.
It's guaranteed that any time some integer is removed from the multiset, there will be at least one occurrence of this integer in it.
For each query of the third type print the number of integers matching the given pattern. Each integer is counted as many times, as it appears in the multiset at this moment of time.
12
+ 1
+ 241
? 1
+ 361
- 241
? 0101
+ 101
? 101
- 101
? 101
+ 4000
? 0
2
1
2
1
1
4
+ 200
+ 200
- 200
? 0
1
Consider the integers matching the patterns from the queries of the third type. Queries are numbered in the order they appear in the input.
- 1 and 241.
- 361.
- 101 and 361.
- 361.
- 4000.
【题解】
给你一个01串。从右到左对应了每个位置上的要求:0该位置为偶数。1该位置为奇数.
如果01串和要判断的数字不一样。谁短谁前面就补0;
我们不管谁短。直接在输入的数字前面补0至18位就好。
然后用字典树来操作。
插入数字的时候。不要具体记录这个数字是什么(没用!),只要知道这个数字是奇数还是偶数就行了嘛。所以93432你就记录11010.
不要被惯性思维影响!
直接记录数字会T!
然后字典树的域要记录以这个节点为终点的数字个数。
每次到这个节点累加这个就可以了。
【代码】
#include <cstdio>
#include <cstring> using namespace std; const int MAX_SIZE = 2000000; int t;
int tree[MAX_SIZE][2] = { 0 },totn = 0,ans = 0;
int e[MAX_SIZE] = { 0 }, stop[MAX_SIZE] = { 0 };
char op[5], dig[30]; void insert()
{
int temp = 0;
int len = 18;
for (int i = len-1; i >=0; i--)
{
int d = dig[i] - '0';
d = d % 2;//直接记录是奇数还是偶数就可以了。
if (tree[temp][d] == 0)
tree[temp][d] = ++totn;
temp = tree[temp][d];
stop[temp]++;
}
e[temp]++;
} void de_lete()
{
int temp = 0;
int len = 18;
for (int i = len-1; i >=0; i--)
{
int d = dig[i] - '0';
d = d % 2;
temp = tree[temp][d];
stop[temp]--;
}
e[temp]--;
} void dfs(int rt, int len) //用dfs来累加答案。
{
ans += e[rt];
if (len < 0)
return;
int d = dig[len] - '0';
if (tree[rt][d])
dfs(tree[rt][d], len - 1); } void get_ans()
{
int temp = 0;
int len = 18;
dfs(temp, len - 1);
} void input_data()
{
scanf("%d", &t);
char s1[30];
for (int i = 1; i <= t; i++)
{
scanf("%s%s", op, s1);
int len = strlen(s1);
for (int i = 0; i <= 18 - len - 1; i++)//补零
dig[i] = '0';
dig[18 - len] = '\0';
strcat(dig, s1);//最后dig记录的是补0后的字符
if (op[0] == '+')
insert();
else
if (op[0] == '-')
de_lete();
else
{
ans = 0;
get_ans();
printf("%d\n", ans);
}
}
} int main()
{
//freopen("F:\\rush.txt", "r", stdin);
input_data();
return 0;
}
【39.68%】【CF 714 C】Filya and Homework的更多相关文章
- [原]Water Water Search Problems' Set~Orz【updating...】
[HDU] [POJ] 作者:u011652573 发表于2014-4-30 10:39:04 原文链接 阅读:30 评论:0 查看评论
- jQuery 中的 39 个技巧【申明:来源于网络】
jQuery 中的 39 个技巧[申明:来源于网络] 地址:http://blog.csdn.net/zhongqi2513/article/details/53704812?ref=myread
- 【codeforces】【比赛题解】#851 CF Round #432 (Div.2)
cf真的难…… 点我浏览丧题. [A]Arpa和她对墨西哥人浪的研究 Arpa正在对墨西哥人浪进行研究. 有n个人站成一排,从1到n编号,他们从时刻0开始墨西哥人浪. 在时刻1,第一个人站起来.在时刻 ...
- 剑指Offer:数组中出现次数超过一半的数字【39】
剑指Offer:数组中出现次数超过一半的数字[39] 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于这 ...
- poj 2411 Mondriaan's Dream 【dp】
题目:id=2411" target="_blank">poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然 ...
- 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】
[118-Pascal's Triangle(帕斯卡三角形(杨辉三角))] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given numRows, generate ...
- HDU1164_Eddy's research I【Miller Rabin素数测试】【Pollar Rho整数分解】
Eddy's research I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 【OCP、OCM、高可用等】小麦苗课堂网络班招生简章(从入门到专家)--课程大纲
[OCP.OCM.高可用等]小麦苗课堂网络班招生简章(从入门到专家)--课程大纲 小麦苗信息 我的个人信息 网名:小麦苗 QQ:646634621 QQ群:618766405 我的博客:http:// ...
- 每日构建【Daily Build Using CruiseControl.NET and MSBuild】(转载)
在上一篇项目 管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中 我们已经讲解了如何使用TortoiseSVN和 ...
随机推荐
- LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number
数学题 172. Factorial Trailing Zeroes Given an integer n, return the number of trailing zeroes in n!. N ...
- 云原生应用 Kubernetes 监控与弹性实践
前言 云原生应用的设计理念已经被越来越多的开发者接受与认可,而Kubernetes做为云原生的标准接口实现,已经成为了整个stack的中心,云服务的能力可以通过Cloud Provider.CRD C ...
- HTTP参考
HTTP参考 一.HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1.1xx:信息,请求收到,继续处理 2.2xx ...
- 【算法】[leetcode] permutations的讨论(转载)
原题是找到一组数的全排列 Given a collection of numbers, return all possible permutations. For example,[1,2,3] ha ...
- Spring data jpa hibernate:查询异常java.sql.SQLException: Column '列名' not found
使用spring boot,jap,hibernate不小心的错误: java.sql.SQLException: Column '列名' not found: 这句话的意思是:找不到此列 为什么会出 ...
- @bzoj - 4356@ Ceoi2014 Wall
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出一个N*M的网格图,有一些方格里面存在城市,其中首都位于网格 ...
- @loj - 2434@ 「ZJOI2018」历史
目录 @description@ @solution@ @accepted code@ @details@ @description@ 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的 ...
- 17-3 cookie和session
一 . Cookie 1.cookie 是什么? 保存在浏览器端的键值对! 服务端在返回响应的时候,告诉浏览器保存的键值对!浏览器可以拒绝保存Cookie. 2. 为什么要有cookie? HTTP请 ...
- 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云
5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL.PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成.据估算,云上成本 ...
- @loj - 2674@ 「NOI2012」美食节
目录 @description@ @solution@ @accepted code@ @details@ @description@ CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节. 作 ...