ZOJ 3826 Hierarchical Notation

原创 2015年07月06日 19:22:18
HASH保存每个KEY对应的值的起始位置和结束位置,最后直接输出就可以了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
long long mv;
map<long long,pair<long long,long long> > G;
string s;
long long op(char n)
{
	if(n>='0'&&n<='9')return n-'0';
	else if(n>='A'&&n<='Z')return n-'A'+11;
	else if(n>='a'&&n<='z')return n-'a'+45;
	else if(n=='.')return 62;
	return 63;
}
void dfs(long long n)
{
	long long temp=n;
	while(s[mv]!='}')
	{
		mv++;
		if(s[mv]=='}')return;
		n = temp;
		while(s[mv]!=':')n=n*123+op(s[mv++]);
		long long left = ++mv;

		if(s[mv]=='{')
			dfs(n*123+62);
		else
			while(s[mv+1]!=','&&s[mv+1]!='}')mv++;
		G[n] = make_pair(left,mv);
		mv++;
	}

}
int main()
{
	long long T;
	cin >> T;
	while(T--)
	{
		
		cin >> s;
		mv = 0;
		G.clear();
		dfs(0);

		long long n;
		cin >> n;
		while(n--)
		{
			string str;
			cin >> str;
			long long nu = 0;
			for(int i=0;i<str.length();i++)
			{
				nu=nu*123+op(str[i]);
			}
			if(G.count(nu))
			{
				for(int i = G[nu].first;i<=G[nu].second;i++)
					cout<<s[i];
				cout<<endl;
			}
			else
				cout<<"Error!"<<endl;
		}
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

zoj 3826 Hierarchical Notation(模拟)

题意:就是根据给定的语法查找某个标签之类的
  • qian99
  • qian99
  • 2014年10月14日 23:47
  • 454

ZOJ 3826 Hierarchical Notation(Mudanjiang 2014)(JSON解析模拟)

Hierarchical Notation Source: The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题意:JSON解析,对于查询的key值...
  • wujy47
  • wujy47
  • 2014年10月15日 16:39
  • 701

ZOJ 3826 Hierarchical Notation(模拟-字符串处理)

ZOJ 3826 Hierarchical Notation题意: 模拟python的字典功能。。 思路:先做预处理,以dfs的形式,将每一个{ a : b } 映射为数字u -> ( l , m...

ZOJ-3826-Hierarchical Notation【哈希】

ZOJ-3826-Hierarchical Notation

2014牡丹江——Hierarchical Notation

2014牡丹江

[2014 Regional]牡丹江 H Hierarchical Notation 做题实录

前情提要:学长们都去牡丹江当炮灰了,我们队只能做同步赛 决定开敲H的时候...
  • fcxxzux
  • fcxxzux
  • 2014年10月13日 13:01
  • 2106

2014牡丹江区域赛H(字典树)ZOJ3826

Hierarchical Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB In Marjar University,...
  • cq_phqg
  • cq_phqg
  • 2014年10月13日 00:54
  • 1161

ZOJ 3826 hash+字符串模拟

zoj 3826

zoj 3829 Known Notation (The 2014 ACM-ICPC Asia Mudanjiang Regional Contest K题) 贪心

题意: 思路: // file name: zoj3829.cpp // // author: kereo // // create time: 2014年10月15日 星期三 19时46分11...

zoj 3829 Known Notation(2014年牡丹江区域赛k题)

Known Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB Do you know reverse Polish n...
  • caduca
  • caduca
  • 2014年10月12日 16:09
  • 972
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZOJ 3826 Hierarchical Notation
举报原因:
原因补充:

(最多只允许输入30个字)