(原创)Problem B: JRM的自动机
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的自动机的更多相关文章
- 【题解】Tree-String Problem Codeforces 291E AC自动机
Prelude 传送到Codeforces:(/ω\)--- (/ω•\) Solution 很水的一道题. 对查询的串建出来AC自动机,然后树上随便跑跑就行了. 为什么要写这篇题解呢? 我第一眼看到 ...
- POJ 1509 Glass Beads 后缀自动机 模板 字符串的最小表示
http://poj.org/problem?id=1509 后缀自动机其实就是一个压缩储存空间时间(对节点重复利用)的储存所有一个字符串所有子串的trie树,如果想不起来长什么样子可以百度一下找个图 ...
- 后缀自动机 && 题目
因为明天要讲解后缀自动机了,所以只能抱抱佛脚,临时做做题目.其实很久以前看过,但是不太懂,看的是clj的原文,不太懂.现在只能临时看看是怎么弄的,应付下. ---------------------- ...
- Trie树&kmp&AC自动机&后缀数组&Manacher
Trie 计数+Trie,读清题意很重要 https://vjudge.net/problem/UVALive-5913 kmp AC自动机 模板:https://vjudge.net/problem ...
- Codeforces 291 E Tree-String Problem AC自动机
Tree-String Problem 网上的dfs + kmp 复杂度就是错的, 除非算出根据下一个字符直接转移Next数组直接转移, 而求出Next[ i ][ 26 ]数组和丢进AC自动机里面没 ...
- 【原创】AC自动机小结
有了KMP和Trie的基础,就可以学习神奇的AC自动机了.AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配. AC自动机 其实 就是创建了一个状态的转移图,思想很 ...
- 回文自动机 + 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 ...
- 【贪心】【后缀自动机】XIII Open Championship of Y.Kupala Grodno SU Grodno, Saturday, April 29, 2017 Problem E. Enter the Word
题意:给你一个串,让你从左到右构造这个串,一次操作可以直接在当前串后面添加一个任意字符,或者拷贝当前串的任意一个子串到当前串的后面.问你最少要多少次操作才能构造出这个串. 从前向后贪心,从当前已构造的 ...
- 2016北京集训测试赛(七)Problem A: 自动机
Solution 注意到这一题并不要求字符串最短或者是字典序最小, 因此直接构造就可以了. 我们对于每个点\(u \ne 0\)找到一个串\(S\), 使得\(T(u, S) = T(0, S)\), ...
随机推荐
- JSF结合Spring 引入ViewScope
当JSF项目的faceConfig中配置了Spring的配置代码 <application> <el-resolver>org.springframework.web.jsf. ...
- 蓝桥杯 历届试题 PREV-3 带分数
历届试题 带分数 时间限制:1.0s 内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3 ...
- svn更新报错:出现skipped:目标路径
skipped 意为:跳过此目标文件: 一般出现在目标文件被删除后,重新更新情况下: 解决办法及结果: 1,回到此目标文件的上一层文件夹,team-clean up,结果不成功 2,回到此目标文件的上 ...
- mysql函数之二:left,right,substring,substring_index MySQL截取字符串函数方法
函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...
- PostgreSQL 监控磁盘使用
监控磁盘使用 1. 判断磁盘用量 每个表都有一个主要的堆磁盘文件,大多数数据都存储在其中.如果一个表有着可能会很宽(尺寸大)的列, 则另外还有一个TOAST文件与这个表相关联, 它用于存储因为太宽而不 ...
- svn使用技巧一:更新、提交、资源库同步之间区别
提交:是用本地文件覆盖服务器的文件,只有提交会导致服务器上发生变化 更新:只是把服务器上最新版本下载到客户端,规则如下: 1.如果你本地的某个文件没有修改过,而服务器上的这个文件别人已经提交过新版本, ...
- 类型:.net;问题:C#lambda表达式;结果:Lambda表达式详解
Lambda表达式详解 前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅.据说它是微软自c#1 ...
- 从文件中读取yuv和h264数据
1.从文件中读取h264数据 参考ffmpeg avc.c写的从文件中一帧帧读取h.264数据的demo #include <stdio.h> #include <stdlib.h& ...
- css知多少(5)——选择器(转)
css知多少(5)——选择器 1. 引言 从本节开始,就进入本系列的第二个部分——css和html的结合——说白了就是选择器. CSS中定义了样式,如何将这些样式设置到相应的html节点上?就不得 ...
- multi-mechanize安装实践
关于multi-mechanize的详细介绍参见如下链接,是其官网 http://testutils.org/multi-mechanize/setup.html multi-mechanize是一款 ...