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(亚洲区域赛牡丹江站 字符串模拟)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5380 Hierarchical Notation ...
  • haoliang94
  • haoliang94
  • 2014年10月20日 16:04
  • 262

ZOJ 3826 大模拟

ZOJ 3826 题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3826 题意: 模拟python的字典...
  • beihai2013
  • beihai2013
  • 2015年10月08日 23:35
  • 208

ZOJ 3826 hash+字符串模拟

zoj 3826
  • Starry_starry_night
  • Starry_starry_night
  • 2017年06月26日 21:17
  • 173

ZOJ 3930 Dice Notation【模拟】【字符串】

题目链接http://www.icpc.moe/onlinejudge/showProblem.do?problemId=5690思路题目有点长,其实前面都是废话,直接看样例都能看懂。三件事1.Exp...
  • wlx65003
  • wlx65003
  • 2016年04月12日 10:10
  • 351

ZOJ - 3496 Assignment 上下界最大流+二分

题目链接点这里 毒瘤题,,wa了无数发,,,才发现当m==0的时候,,会输出一些奇怪的东西。。。 以后,,不管什么题都要记得特判,,恩,,,不然会死的很惨。。 #include #inc...
  • qq_30927651
  • qq_30927651
  • 2017年03月31日 23:04
  • 193

ZOJ2838【LCA在线查询】

模板题。 推荐博文:点我打开链接 博主再啰嗦几句: 储存遍历序列的数组ver[ ]; 每个结点第一次出现的位置的数组 First[ ]; 当前位置的深度的数组 deep[ ]   ...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2017年04月08日 21:42
  • 433

ZOJ 3829 Known Notation【贪心】【好题】

Known Notation Time Limit: 2 Seconds      Memory Limit: 65536 KB Do you know reverse Polish notati...
  • Archger
  • Archger
  • 2017年06月26日 16:38
  • 185

九度OJ 题目1006:ZOJ问题

一.题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。  是否AC的规则如下: 1. zoj能AC; 2. 若字符串形式为xzojx,则也能AC,其中x可...
  • lhyer
  • lhyer
  • 2015年08月07日 20:53
  • 902

算法学习之“Big Oh Notation”

一、Asymptotic analysis Suppose we are considering two algorithms, A and B, for solving a given pro...
  • Sagittarius_Warrior
  • Sagittarius_Warrior
  • 2015年12月08日 10:36
  • 810

浙大ZOJ 1009 Enigma问题解决及别人的解决方案

教训:在这题上浪费太多次机会了,因为以下几个原因: 1. 没考虑到m(m为轮子字母表的规模)为1的情况,从而导致出现“Floating Point Error”。通过将“if(i!=0&&i%(m-...
  • xiaogugood
  • xiaogugood
  • 2014年01月06日 17:16
  • 1653
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZOJ 3826 Hierarchical Notation
举报原因:
原因补充:

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