Codeforces Round #371 (Div. 2) C. Sonya and Queries
2016-09-14 13:17
477 查看
题目链接
分析:01trie树,很容易就看出来了,也没什么好说的。WA了一发是因为没有看见如果数字位数大于01序列的时候01序列也要补全0。我没有晚上爬起来打,白天发现过的人极多。
分析: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【字典树】
- Codeforces Round #371 (Div. 2) C. Sonya and Queries
- Codeforces Round #371 (Div. 2) C. Sonya and Queries (01trie树)
- Codeforces Round #371 (Div. 2) C. Sonya and Queries[Map|二进制]
- Codeforces Round #371 (Div. 2) C. Sonya and Queries
- Codeforces Round #371 (Div. 1) A. Sonya and Queries(trie)
- Codeforces Round #371 (Div. 2) C. Sonya and Queries 水题
- Codeforces Round #371 (Div. 1)-A. Sonya and Queries(Trie树)
- Codeforces Round #371 (Div. 1)A Sonya and Queries
- Codeforces Round #371 (Div. 2) C. Sonya and Queries (map)
- Codeforces Round #371 (Div. 2)C. Sonya and Queries
- Codeforces Round #371 (Div. 2) C. Sonya and Queries —— 二进制压缩
- codeforces 714C. Sonya and Queries (思维题)
- Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend
- 递推 Codeforces Round #186 (Div. 2) B. Ilya and Queries
- Codeforces Round #216_div2_E.Valera and Queries
- CodeForces 714C Sonya and Queries(字典树/思维)
- codeforces-371-C. Sonya and Queries
- [CF714C]Sonya and Queries(STL)
- Codeforces 371C - Sonya and Queries(思维)