Description

JRM自称是自动机之鼻祖,今天他又发明了一个自动机。人称自动复读机,宣称比LGQ的复读机的性能好无数倍。这个复读机有很多功能,你可以教会他
如何回答一个问题,还可以询问他问题,如果他会的话,就会回答。他还有其他奇奇怪怪的设定,比如说你可以禁止他回答某个问题,然后还可以解除
这个禁止。

Input

每个输入仅有一组
第一行一个整数Q(1<=Q<=10000)代表有Q次操作
接下来有Q行,每行先输入一个t,代表询问的类型
当 t == 1 时: 输入两个两个字符串,a和b,代表你教会了机器问题a的答案为b,如果问题a已经有答案,则覆盖之前的答案。
当 t == 2 时: 输入一个字符串a,代表你问机器一个问题a,如果机器会且有权限回答这个问题,则回答该问题的答案,如果不会或无权限,则输出 “I don't know what to say!”(不包括双引号)
当 t == 3 时:输入一个字符串a,代表如果接下来有t==2的操作时,禁止机器回答问题a。
当 t == 4 时:输入一个字符串a,代表如果问题a被禁止回答的话,接下来有t==2的操作时,可以回答问题a了。如果问题a没有被禁止,则无视本次操作。
所有字符串长度 <=10 且仅由小写字母或英文的问号和感叹号组成,不包含任何空格和其他标点符号。

Output

对于每个t==2的查询,输出一个字符串,代表该问题的答案,或者输出“I don't know what to say!”(不包括双引号)

Sample Input

10
1 aaa? bbb!
2 aaa?
1 jrm? lgq!
1 lgq? lzl!
2 lzl?
3 lgq?
2 lgq?
4 lgq?
2 lgq?
2 jrm?

Sample Output

bbb!
I don't know what to say!
I don't know what to say!
lzl!
lgq!
解题思路:这道题就是看着题意来写,这道题我在比赛的时候心态不太好,if的位置放错,一直wrong answer;
主要是用两个map数组来记录问题是否被回答;问题是否被禁止回答,问题是否解除禁止;
 #include<iostream>
#include<map>
using namespace std; int Q;
string s , t;
int a;
map<string,string>mp; //用mp来记录答案;方便查询的时候立即输出;
map<string,int>vis; //用vis来记录该问题是否被回答过;
map<string,int>flag; //用flag来记录是否被禁止回答;
int main()
{
cin>>Q;
for(int i = ; i < Q;i++)
{
cin>>a;
if(a==)
{
cin>>s>>t;
mp[s] = t; //输入问题的答案;
vis[s] = ; //记录该问题是有答案的
}
if(a==)
{
cin>>s;
if(vis[s]==&&flag[s]==) //该问题是有答案的且没有被禁止;
{
cout<<mp[s]<<endl; //直接输出答案;
}
else
cout<<"I don't know what to say!"<<endl; //如果问题没有答案或者被禁止了
} if(a==)
{
cin>>s;
flag[s] = ; //标记该问题被禁止了;
}
if(a==)
{
cin>>s;
flag[s] = ; //让问题恢复没有被禁止状态;
}
}
return ;
}
 

(原创)Problem B: JRM的自动机的更多相关文章

  1. 【题解】Tree-String Problem Codeforces 291E AC自动机

    Prelude 传送到Codeforces:(/ω\)--- (/ω•\) Solution 很水的一道题. 对查询的串建出来AC自动机,然后树上随便跑跑就行了. 为什么要写这篇题解呢? 我第一眼看到 ...

  2. POJ 1509 Glass Beads 后缀自动机 模板 字符串的最小表示

    http://poj.org/problem?id=1509 后缀自动机其实就是一个压缩储存空间时间(对节点重复利用)的储存所有一个字符串所有子串的trie树,如果想不起来长什么样子可以百度一下找个图 ...

  3. 后缀自动机 && 题目

    因为明天要讲解后缀自动机了,所以只能抱抱佛脚,临时做做题目.其实很久以前看过,但是不太懂,看的是clj的原文,不太懂.现在只能临时看看是怎么弄的,应付下. ---------------------- ...

  4. Trie树&kmp&AC自动机&后缀数组&Manacher

    Trie 计数+Trie,读清题意很重要 https://vjudge.net/problem/UVALive-5913 kmp AC自动机 模板:https://vjudge.net/problem ...

  5. Codeforces 291 E Tree-String Problem AC自动机

    Tree-String Problem 网上的dfs + kmp 复杂度就是错的, 除非算出根据下一个字符直接转移Next数组直接转移, 而求出Next[ i ][ 26 ]数组和丢进AC自动机里面没 ...

  6. 【原创】AC自动机小结

    有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配.           AC自动机 其实 就是创建了一个状态的转移图,思想很 ...

  7. 回文自动机 + DFS --- The 2014 ACM-ICPC Asia Xi’an Regional Contest Problem G.The Problem to Slow Down You

    The Problem to Slow Down You Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.actio ...

  8. 【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word

    题意:给你一个串,让你从左到右构造这个串,一次操作可以直接在当前串后面添加一个任意字符,或者拷贝当前串的任意一个子串到当前串的后面.问你最少要多少次操作才能构造出这个串. 从前向后贪心,从当前已构造的 ...

  9. 2016北京集训测试赛(七)Problem A: 自动机

    Solution 注意到这一题并不要求字符串最短或者是字典序最小, 因此直接构造就可以了. 我们对于每个点\(u \ne 0\)找到一个串\(S\), 使得\(T(u, S) = T(0, S)\), ...

随机推荐

  1. 单端IO标准

    单端标准 常用的单端IO标准是LVTTL和LVCMOS. 目前业界绝大部分FPGA/CPLD器件的LVCOMS的IO是由CMOS推挽(push-pull)驱动器构成的,这种结构是上面的PMOS管和下面 ...

  2. HDOJ1016(标准dfs)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. java继承 子类重写父类方法

    package com.addd; //多态 public class Sld { private String name = "zhangsan"; public Sld() { ...

  4. java代码----方法类练习中~~~未领会

    总结:今天我很失败,问了老师继承的问题还是没弄懂.因为,技术宅的能力,我好怕啊.太强了. package com.da.ima2; public class yut {// 使用substring方法 ...

  5. perform-maintence-on-replica-set-members

    https://docs.mongodb.com/v3.0/tutorial/perform-maintence-on-replica-set-members/ 1 oplog 改变大小 --详见mo ...

  6. 2016.8.17服务器端数据库用户导入导出方法 expdp和impdp

    EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. IMP只适用于EXP导出的 ...

  7. RegisterUserFunc为测试对象添加新方法或重写已有方法

    QTP中为了提高扩展性,提供了一个为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法的函数RegisterUserFunc,在此给大家分享一下. RegisterUserFunc:为测试对象 ...

  8. ios下编译opencv

    如果想要在ios下编译opencv 需要安装Cmake 这里通过homebrew 来安装cmake ios下打开终端然后先安装 homebrew :(mac 下自带ruby) ruby -e &quo ...

  9. 导入android studio项目,编译失败

    使用android studio 打开studio 工程,编译的时候报错: “ INFO - .project.GradleProjectResolver - Gradle project resol ...

  10. java执行linux命令的工具类

    package com.starfast.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja ...