zoj 3826 Hierarchical Notation(模拟)
2014-10-13 09:22
309 查看
题目链接:zoj 3826 Hierarchical Notation
题目大意:给定一些结构体,结构体有value值和key值,Q次询问,输出每个key值对应的value值。
解题思路:思路很简单,写个类词法的递归函数,每次将key值映射成一个hash值,用map映射每个key的value起始终止位置,预处理完了查询就很简单了。
这题是最后10分钟出的,因为没有考虑value为{}的情况,导致RE了,但是zoj上显示的是SE,表示不理解什么意思,其实就是RE,不过还有一个地方会导致RE,就是询问的长度可能非常大。手贱瞎改了一下就给过了。PS:我做的是同步赛。
题目大意:给定一些结构体,结构体有value值和key值,Q次询问,输出每个key值对应的value值。
解题思路:思路很简单,写个类词法的递归函数,每次将key值映射成一个hash值,用map映射每个key的value起始终止位置,预处理完了查询就很简单了。
这题是最后10分钟出的,因为没有考虑value为{}的情况,导致RE了,但是zoj上显示的是SE,表示不理解什么意思,其实就是RE,不过还有一个地方会导致RE,就是询问的长度可能非常大。手贱瞎改了一下就给过了。PS:我做的是同步赛。
#include <cstdio> #include <cstring> #include <map> #include <vector> #include <algorithm> using namespace std; typedef unsigned long long ll; typedef pair<int,int> pii; const int maxn = 2000000; const ll x = 123; int N, Q, mv; char op[maxn], s[maxn]; map<ll, pii> G; inline int idx(char ch) { if (ch >= '0' && ch <= '9') return ch - '0'; else if (ch >= 'A' && ch <= 'Z') return ch - 'A' + 10; else if (ch >= 'a' && ch <= 'z') return ch - 'a' + 36; else if (ch == '.') return 62; return 63; } void solve (ll u) { ll tmp = u; while (s[mv] != '}') { mv++; if (s[mv] == '}') return; u = tmp; while (s[mv] != ':') u = u * x + idx(s[mv++]); int l = ++mv; if (s[mv] == '{') solve(u * x + 62LL); else while (s[mv+1] != ',' && s[mv+1] != '}') mv++; G[u] = make_pair(l, mv); mv++; } } int main () { int cas; scanf("%d", &cas); while (cas--) { scanf("%s", s); mv = 0; G.clear(); solve(0); scanf("%d", &Q); for (int i = 1; i <= Q; i++) { scanf("%s", op); ll ret = 0; int len = strlen(op); for (int i = 0; i < len; i++) ret = ret * x + idx(op[i]); if (G.count(ret)) { pii u = G[ret]; for (int i = u.first; i <= u.second; i++) printf("%c", s[i]); printf("\n"); } else printf("Error!\n"); } } return 0; }
相关文章推荐
- ZOJ 3826 Hierarchical Notation(2014 牡丹江 H,字符串模拟)
- ZOJ 3826 Hierarchical Notation(模拟-字符串处理)
- ZOJ 3826 Hierarchical Notation(Mudanjiang 2014)(JSON解析模拟)
- ZOJ 3826 Hierarchical Notation 模拟
- zoj 3826 Hierarchical Notation(模拟)
- ZOJ 3826 Hierarchical Notation(亚洲区域赛牡丹江站 字符串模拟)
- ZOJ 3826 Hierarchical Notation 模拟
- zoj 3826 Hierarchical Notation(模拟)
- ZOJ 3826 Hierarchical Notation 模拟
- zoj 3826 Hierarchical Notation(模拟)
- zoj3826 Hierarchical Notation
- ZOJ 3826 Hierarchical Notation(2014 Asia Mudanjiang Regional Contest)
- ZOJ 3826 Hierarchical Notation
- ZOJ 3826 Hierarchical Notation
- ZOJ-3826-Hierarchical Notation【哈希】
- zoj 3826 Hierarchical Notation(hash+dfs)
- ZOJ 3826 Hierarchical Notation(2014 牡丹江 B,树的直径+二分)
- ZOJ 3826 Hierarchical Notation(2014 牡丹江 D,概率DP)
- ZOJ 3826 Hierarchical Notation
- ZOJ3829-贪心|模拟-Known Notation