题目链接

分析:01trie树,很容易就看出来了,也没什么好说的。WA了一发是因为没有看见如果数字位数大于01序列的时候01序列也要补全0。我没有晚上爬起来打,白天发现过的人极多。

/*****************************************************/
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <map>
#include <set>
#include <ctime>
#include <stack>
#include <queue>
#include <cmath>
#include <string>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define offcin ios::sync_with_stdio(false)
#define sigma_size 26
#define lson l,m,v<<1
#define rson m+1,r,v<<1|1
#define slch v<<1
#define srch v<<1|1
#define sgetmid int m = (l+r)>>1
#define LL long long
#define ull unsigned long long
#define mem(x,v) memset(x,v,sizeof(x))
#define lowbit(x) (x&-x)
#define bits(a) __builtin_popcount(a)
#define mk make_pair
#define pb push_back
#define fi first
#define se second const int INF = 0x3f3f3f3f;
const LL INFF = 1e18;
const double pi = acos(-1.0);
const double inf = 1e18;
const double eps = 1e-9;
const LL mod = 1e9+7;
const int maxmat = 10;
const ull BASE = 31; /*****************************************************/ const int maxn = 3e5 + 5;
int ch[maxn][2];
int sz = 1;
LL val[maxn];
void addnode(LL x) {
LL base = 1;
int u = 0;
for (int i = 0; i < 18; i ++) {
int c = (x / base) % 10;
c %= 2;
if (!ch[u][c]) {
ch[u][c] = sz ++;
mem(ch[sz], 0);
val[sz] = 0;
}
u = ch[u][c];
base *= 10LL;
}
val[u] ++;
}
void deletenode(LL x) {
LL base = 1;
int u = 0;
for (int i = 0; i < 18; i ++) {
int c = (x / base) % 10;
c %= 2;
u = ch[u][c];
base *= 10LL;
}
val[u] --;
}
int searchnode(char *s) {
int len = strlen(s);
LL ans = 0;
int u = 0, c;
for (int i = 0; i < 18; i ++) {
if (i < len) c = s[len - 1 - i] - '0';
else c = 0;
u = ch[u][c];
ans += val[u];
}
return ans;
}
int main(int argc, char const *argv[]) {
int N;
cin>>N;
char op[2];
char s[20];
LL x;
for (int i = 0; i < N; i ++) {
scanf("%s", op);
if (op[0] == '+') {
cin>>x;
addnode(x);
}
else if (op[0] == '-') {
cin>>x;
deletenode(x);
}
else {
scanf("%s", s);
cout<<searchnode(s)<<endl;
}
}
return 0;
}

Codeforces Round #371 (Div. 2) C. Sonya and Queries的更多相关文章

  1. Codeforces Round #371 (Div. 2) C. Sonya and Queries 水题

    C. Sonya and Queries 题目连接: http://codeforces.com/contest/714/problem/C Description Today Sonya learn ...

  2. Codeforces Round #371 (Div. 2) C. Sonya and Queries —— 二进制压缩

    题目链接:http://codeforces.com/contest/714/problem/C C. Sonya and Queries time limit per test 1 second m ...

  3. Codeforces Round #371 (Div. 2) C. Sonya and Queries[Map|二进制]

    C. Sonya and Queries time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend 贪心

    C. Sonya and Problem Wihtout a Legend 题目连接: http://codeforces.com/contest/713/problem/C Description ...

  5. Codeforces Round #371 (Div. 2)E. Sonya and Problem Wihtout a Legend[DP 离散化 LIS相关]

    E. Sonya and Problem Wihtout a Legend time limit per test 5 seconds memory limit per test 256 megaby ...

  6. Codeforces Round #371 (Div. 1) C - Sonya and Problem Wihtout a Legend

    C - Sonya and Problem Wihtout a Legend 思路:感觉没有做过这种套路题完全不会啊.. 把严格单调递增转换成非严格单调递增,所有可能出现的数字就变成了原数组出现过的数 ...

  7. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  8. 递推 Codeforces Round #186 (Div. 2) B. Ilya and Queries

    题目传送门 /* 递推:用cnt记录前缀值,查询区间时,两个区间相减 */ #include <cstdio> #include <algorithm> #include &l ...

  9. Codeforces Round #371 (Div. 2) 转换数字

    C. Sonya and Queries time limit per test 1 second memory limit per test 256 megabytes input standard ...

随机推荐

  1. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享

    WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置 ...

  2. ECMAScript数据类型

    [ 基本数据类型 ]-->5种 Undefined Null Boolean Number String [ 复杂数据类型 ]-->1种 Object [ typeof 返回值] --&g ...

  3. servlet1

    1.jsp其实就是servlet 2.一个java类实现servlet接口,然后在浏览器端访问即可

  4. MongoDB数据库基本用法

    show dbs:显示数据库列表  show collections:显示当前数据库中的集合(类似关系数据库中的表)  show users:显示用户 use <db name>:切换当前 ...

  5. 【转】PowerShell入门(序):为什么需要PowerShell?

    转至:http://www.cnblogs.com/ceachy/archive/2013/01/23/PowerShellPreface.html 曾几何时,微软的服务器操作系统因为缺乏一个强大的S ...

  6. Linux多节点互信配置

    SSH互信设置步骤:   1. 每个节点上分别生成自己的公钥和私钥   2. 将各节点的公钥文件汇总到一个总的认证文件authorized_keys中   3. 将这个包含了所有节点公钥的认证文件au ...

  7. easyui DataGrid 工具类之 Utils class

    import java.lang.reflect.InvocationTargetException;import java.text.ParseException;import java.text. ...

  8. zigbee学习之路(十):串口(接收)

    一.前言 上次我们学习了串口的发送,今天我们要学习串口的接收,要实现的功能是接收电脑发来的数据,控制LED 灯闪烁,而且将收到的数据发回给电脑显示出来.而且要采用不占用cpu资源的中断. 二原理与分析 ...

  9. 如何阅读《ECMAScript 2015 Language Specification》

    你不需要把<ECMAScript 2015 Language Specification>通读一遍,因为没那个必要.   阮一峰建议: 对于一般用户来说,除了第4章,其他章节都涉及某一方面 ...

  10. Codeforces 720A. Closing ceremony

    A. Closing ceremony time limit per test 2 seconds memory limit per test 256 megabytes The closing ce ...