★   输入文件:asm_talk.in   输出文件:asm_talk.out   简单对比
时间限制:2 s   内存限制:256 MB

【题目描述】

“人呐都不知道,自己不可以预料,直升机刚一出圣地亚哥就把我丢到你们船上,说中央已经决定了,让我来帮忙监听无线电信号……”

美国海军“无蛤”号电子测量船的船长,斯科特·华莱士继续把玩着手中的鸭嘴笔,“咱们就在你要监听的那个人工智能舰队眼皮底下,你怎么知道这么作死没问题?”

“管它呢,我告诉你一点人生的经验,有事就坐那个撤,”Asm.Def瞟了一眼窗外为“无蛤”号护航的151“雪风”号驱逐舰,“它跑得比谁都快。”

华莱士的内心此时是崩溃的。“来人,把Asm.Def塞进意大利炮,打出去。我从未见过有如此厚颜……”

“住手!”Asm.Def大喊。

“我们在圣地亚哥找到的数据表明,人工智能发出的无线电信号遵循一定模式,据此可以预测它们的行动。”

Asm.Def检测到了一系列无线电信号,每个信号都是由小写字母组成,长度<=20的字符串。他有时会查询,某个字符串T是否已被检测到。T中可能会包含一个通配符“*”,代表这一位可以是任意字母。

【输入格式】

第一行一个整数m,表示操作数量。

接下来m行每行一个操作,为如下两种之一:

1 S:表示Asm.Def新检测到了一个信号S。

2 T:表示查询信号T是否已被检测到。有则输出“YES”,否则输出“NO”。T中至多包含一个通配符“*”。

【输出格式】

对每个2操作,输出一行“YES”或“NO”。

【样例输入】

6
1 ab
2 ab*
1 abc
1 adc
2 *d
2 abc

【样例输出】

NO
NO
YES

【提示】

数据范围:

70%的数据,m<=1000.

100%的数据,m<=10^5.

S、T都是长度不超过20的小写字母串,但T中可能包含通配符。

【来源】

在此键入。

mmp 气死我了

mmp 气得我都splay了

mmp 本来写的好好的trie树 本地测试各种过,评测机测试各种WA

mmp 强行改的set

mmp trie树代码理论上过了。。(无用的自我安慰)

屠龙宝刀点击就送

#include <iostream>
#include <cstdio>
#include <string>
#include <set> using namespace std;
int n;
string a;
set<string>se;
bool find_(string b)
{
if(se.count(b) )
return true;
for(int i=b.size();~i;i--)
{
if(b[i]=='*')
{
for(int j=;j<;j++)
{
b[i]=j+'a';
if(se.count(b) ) return true;
}
}
}
return false;
}
int main()
{
freopen("asm_talk.in","r",stdin);
freopen("asm_talk.out","w",stdout);
scanf("%d",&n);
for(int opt;n--;)
{
scanf("%d",&opt);
cin>>a;
if(opt==) se.insert(a);
else find_(a)?printf("YES\n"):printf("NO\n");
}
return ;
}

理论上过的trie树。。

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
using namespace std;
struct node
{
int cnt;
node * next[];
bool exict;
}*root;
int tot=,m;
node * create()
{
node * rt=new node;
memset(rt->next,,sizeof(rt->next));
rt->cnt=;
rt->exict=;
return rt;
}
void ins(string a)
{
node *p=root;
for(int i=;i<a.length();i++)
{
int id=a[i]-'a'+;
if(p->next[id]==)
p->next[id]=create();
p=p->next[id];
p->cnt++;
}
p->exict=;
}
int search(string a)
{
node *p=root;
for(int i=;i<a.length();i++)
{
int id=a[i]-'a'+;
p=p->next[id];
if(p==NULL) return ;
}
if(p->exict) return ;
}
int main()
{
freopen("asm_talk.in","r",stdin);
freopen("asm_talk.out","w",stdout);
root=create();
scanf("%d",&m);
string sign;
for(int opt;m--;)
{
scanf("%d",&opt);cin>>sign;
if(opt==)
{
int k=sign.find('*');
if(k!=-)
{
for(int i=;i<=;i++)
{
sign[k]=i+'a';
ins(sign);
}
}
else ins(sign);
}
else
{
int k=sign.find('*');
bool flag=false;
if(k!=-)
{
for(int i=;i<=;i++)
{
sign[k]=i+'a';
if(search(sign))
{
printf("YES\n");
flag=true;
break;
}
}
if(!flag) printf("NO\n");
}
else search(sign)?printf("YES\n"):printf("NO\n");
}
}
return ;
}

COGS 2082. Asm.Def谈笑风生的更多相关文章

  1. Asm.Def谈笑风生

    ★   输入文件:asm_talk.in   输出文件:asm_talk.out简单对比时间限制:2 s   内存限制:256 MB [题目描述] “人呐都不知道,自己不可以预料,直升机刚一出圣地亚哥 ...

  2. COGS——T2084. Asm.Def的基本算法

    http://cogs.pro/cogs/problem/problem.php?pid=2084 ★☆   输入文件:asm_algo.in   输出文件:asm_algo.out   简单对比时间 ...

  3. COGS——C2098. Asm.Def的病毒

    http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out    ...

  4. cogs——2098. Asm.Def的病毒

    2098. Asm.Def的病毒 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就 ...

  5. COGS 2091. Asm.Def的打击序列

    ★★★   输入文件:asm_lis.in   输出文件:asm_lis.out   简单对比时间限制:4 s   内存限制:256 MB [题目描述] 白色圆柱形的“蓝翔”号在虚空中逐渐变大,一声沉 ...

  6. COGS 2084. Asm.Def的基本算法

    ★☆   输入文件:asm_algo.in   输出文件:asm_algo.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “有句美国俗语说,如果走起来像鸭子,叫起来像 ...

  7. COGS 2098. Asm.Def的病毒

    ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持 ...

  8. cogs——2084. Asm.Def的基本算法

    2084. Asm.Def的基本算法 ★☆   输入文件:asm_algo.in   输出文件:asm_algo.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “有句 ...

  9. cogs 2098. [SYOI 2015] Asm.Def的病毒 LCA 求两条路径是否相交

    2098. [SYOI 2015] Asm.Def的病毒 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 M ...

随机推荐

  1. dubbo 学习笔记 -- provider端

    服务端的配置文件:    provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  2. Spring-SpringMVC-Mybatis实例

    源码下载:https://pan.baidu.com/s/1kUK7qYj   提取码:3mgb 最近在学习SSM框架,先讲一下这三大框架都有什么作用. SpringMVC:  它用于web层,相当于 ...

  3. 安装APK时SO库的选择策略

    此文已由作者尹彬彬授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 0X0 前言 在Android系统中,当我们安装apk文件的时候,lib目录下的so文件会被解压到app的原 ...

  4. MySQL基础知识(一)-超详细MySQL安装教程

    简介 原计划,今天这篇想要给小伙伴们讲解一下python操作mysql数据库,但是由于近期换了一台新的电脑,所以一看mysql数据库都没安装,所有才有了这篇文章.尽管网上不乏此类型的文章,但是刚好自己 ...

  5. ajaxForm上传文件到本地服务器(封装)

    不啰嗦,直接看代码 1.html: <div class="con-item fix"> <span class="f">文章封面< ...

  6. vijosP1286座位安排(状压DP)

    传送门 题意 计算\(C_{n*m}^k/可行方案数\) 分析 定义dp[i][j][k]为第i行用过人数为j个且第i行状态为k的方案数 转移方程:dp[i][j][k]=Σdp[i-1][j-num ...

  7. Unity Mecanim在大型mmo中的应用

    http://blog.csdn.net/langresser_king/article/details/37760091?utm_source=tuicool&utm_medium=refe ...

  8. IT兄弟连 JavaWeb教程 Servlet会话跟踪 获取Session对象

    Session对象的获取有两种: ●  有参方法: HttpSession request.getSession(boolean isNew) 参数: true:获取一个Session对象,如果之前S ...

  9. c++中初始化列表的初始化变量顺序问题

    例题来看:请问下面程序打印出的结果是什么? #include <iostream> #include <string> using namespace std; class b ...

  10. kali 装好java后提示 -bash: /home/javainstall/jdk1.8.0_171/bin/java: 没有那个文件或目录

    [问题现象] 在/etc/profile配置里面也是配置好了的,并且该目录是有java的 [问题原因] 出现这个问题的原因:64位的系统,安装了32位的Java. [解决方案] 通过网络搜索,发现通过 ...