problemId=5380" style="background-color:rgb(51,255,51)">题目链接

字符串模拟

const int MAXN = 2000000;

char ipt[MAXN], t[MAXN];
int f[MAXN], len, to[MAXN];
map<string, string> mp[MAXN];
string x, key, ans;
string i2s(int n)
{
string ret = "";
if (n == 0)
ret += '0';
else
{
while (n)
{
ret += n % 10 + '0';
n /= 10;
}
}
ret += '*';
reverse(ret.begin(), ret.end());
return ret;
}
int s2i(string& s)
{
int ret = 0;
FF(i, 1, s.length())
ret = ret * 10 + s[i] - '0';
return ret;
} void fun_f()
{
stack<int> sk;
sk.push(0);
int cnt = 0;
REP(i, len)
{
if (ipt[i] == '{')
{
sk.push(++cnt);
f[i] = cnt;
to[f[i]] = i;
}
else if (ipt[i] == '}')
{
sk.pop();
f[i] = sk.top();
}
}
} void fun_ipt()
{
int state = 0, lv = 0, nxt;
REP(i, len)
{
switch (ipt[i])
{
case '\"':
if (state == 0 || state == 2)
x = "\"";
else if (state == 1)
key = x + '\"';
else
mp[lv][key] = x + '\"';
state = (state + 1) % 4;
break;
case '{':
nxt = f[i];
if (state == 2)
{
mp[lv][key] = i2s(nxt);
state = 0;
}
lv = nxt;
break;
case '}':
lv = f[i];
break;
case ':' || ',':
break;
default:
x += ipt[i];
}
}
} void fun_case()
{
int state = 0, lv = 0, n;
RI(n);
REP(kase, n)
{
bool ok = true;
state = 0, lv = 1;
RS(t);
len = strlen(t);
REP(i, len)
{
if (t[i] == '\"')
{
if (state == 0)
x = '\"';
else
{
x += '\"';
if (mp[lv].count(x) == 0)
{
ok = false;
break;
}
}
ans = mp[lv][x];
state = !state;
}
else if (t[i] == '.')
{
if (ans[0] != '*')
{
ok = false;
break;
}
lv = s2i(ans);
}
else
x += t[i];
}
if (ok)
{
if (ans[0] == '*')
{
int i = to[s2i(ans)], cnt = 0;
while (true)
{
if (ipt[i] == '{')
cnt++;
else if (ipt[i] == '}')
{
if (--cnt == 0)
break;
}
putchar(ipt[i]);
i++;
}
puts("}");
}
else
puts(ans.c_str());
}
else
puts("Error!");
}
} int main()
{
int T;
RI(T);
while (T--)
{
REP(i, MAXN)
mp[i].clear(); RS(ipt);
len = strlen(ipt);
fun_f();
fun_ipt();
fun_case();
}
return 0;
}

2014牡丹江——Hierarchical Notation的更多相关文章

  1. 2014牡丹江——Known Notation

    题目链接 题意: 输入一个长度不超过1000的字符串,包含数字(1-9)和星号(*).字符串中的空格已经丢失,所以连起来的数字串能够看成很多分开的数.也能够看成连续的数,即能够随意加入空格. 如今有两 ...

  2. 2014 牡丹江区域赛 B D I

    http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=358 The 2014 ACM-ICPC Asia Mudanj ...

  3. ZOJ 3826 Hierarchical Notation 模拟

    模拟: 语法的分析 hash一切Key建设规划,对于记录在几个地点的每个节点原始的字符串开始输出. . .. 对每一个询问沿图走就能够了. .. . Hierarchical Notation Tim ...

  4. zoj3826 Hierarchical Notation (字符串模拟)

    Hierarchical Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB In Marjar University, stude ...

  5. 2014牡丹江区域赛H(特里)ZOJ3826

    Hierarchical Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB In Marjar University, stude ...

  6. [2014 Regional]牡丹江 H Hierarchical Notation 做题记录

    主妇:老年人谁是炮灰牡丹江,我们的团队只是做同步大赛 他决定开爆震H什么时候,A 5min 1Y.I在该限制后,纠结了很久30min+ 1Y,神继续承担各种位置卡D在,hpp见B我认为这是非常熟悉的研 ...

  7. ZOJ 3829 Known Notation (2014牡丹江H称号)

    主题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=5383 Known Notation Time Limit: 2 S ...

  8. 2014牡丹江K Known Notation

    Known Notation Time Limit: 2 Seconds      Memory Limit: 65536 KB Do you know reverse Polish notation ...

  9. ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)

    Description Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathema ...

随机推荐

  1. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

  2. Webserver管理系列:11、注意默认的隐含共享

    安装完Windows Server 2008之后默认的c/d/e...磁盘是共享的. 我们能够通过取消"Microsoft网络的文件和打印机共享"服务来阻止别人訪问我们的共享文件:

  3. Swift - 点击输入框外部屏幕关闭虚拟键盘

    我们如果把文本框的Return Key设置成Done,然后在storyboard中将文本框的Did End On Exit事件在代码里进行关联.同时关联代码里调用文本框的resignFirstResp ...

  4. 关于Android配色 自适应颜色的实现

    在Android4.4系统中,更加详细地介绍了关于颜色的细节并提供了使用colour的新教程,以使我们的应用更加独一无二.也就是说,作为一个设计师或者开发者,为你的APP做完美的配色已经变成了你的职责 ...

  5. [Win]进程间通信——邮槽Mailslot

    进程间通信 进程的地址空间是私有的.出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义.但是在一些具体的应用情况下需要多个进行相互配合 ...

  6. PreferenceActivity使用示例

    MainActivity如下: package cn.testpreferenceactivity; import android.content.SharedPreferences; import ...

  7. linux c编程 多线程(初级)《转载》---赠人玫瑰,手有余香!

    原文地址:http://blog.csdn.net/liang890319/article/details/8393120   进程简单的说就是把一段代码复制成多份,并让他们同时执行.进程间通信是为了 ...

  8. [读书笔记]设计原本[The Design of Design]

    第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...

  9. 循环灯控制器,该控制器控制红、绿、黄三个发光管循环发亮(VHDL语言)

    设计一个循环灯控制器,该控制器控制红.绿.黄三个发光管循环发亮.要求红发光管亮2秒,绿发光管亮3秒,黄发光管亮1秒.(假设外部提供频率为1MHz的方波信号) library ieee; use iee ...

  10. Linux下select, poll和epoll IO模型的详解

    http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...