★   输入文件: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. Linux启动eclipse报错找不到java环境解决方法

    在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...

  2. Visual Studio 2013 Update 1

    Visual Studio 2013 Update 1 VS2013.1.iso 共 245 MB http://download.microsoft.com/download/8/2/6/826E2 ...

  3. 【221】◀▶ IDL GUI 函数说明

    参考:GUI - Dialogs Routines参考:GUI - Widgets Routines参考:GUI - Compound Widgets Routines 01   DIALOG_MES ...

  4. junit4 Assert静态方法及API

    junit中的assert方法全部放在Assert类中. 1.assertTrue/False([String message,]boolean condition);    用来查看变量是是否为fa ...

  5. Gym 100851A Adjustment Office (思维)

    题意:给定一个 n*n 的矩阵,然后有 m 个询问,问你每一行或者每一列总是多少,并把这一行清空. 析:这个题不仔细想想,还真不好想,我们可以根据这个题意,知道每一行或者每一列都可以求和公式来求,然后 ...

  6. shell初级-----更多结构化命令

    for命令 bash shell提供了for命令,允许你创建一个遍历一系列的循环. for var in list do commands done 1.读取列表中的值 for命令最基本的用法就是遍历 ...

  7. UGUI(四)事件系统的封装

    UGUI的事件系统默认使用时,是需要当前的类继承事件接口,就可以在该类中加入它的事件方法,但是在多人开发时这种方式没什么好处. 用过NGUI的或许都知道UIEventListener这个类,因为使用超 ...

  8. 洛谷P2473 [SCOI2008]奖励关(期望+状压)

    传送门 我数学期望还是太差了…… 先考虑状压模型,设$dp[i][S]$表示第$i$轮,当前宝物状态为$S$,能获得的最大期望分数 然而这个模型有一个问题,第$i$轮不一定能达到状态$S$ 那么考虑转 ...

  9. css 三种引用方式

    内联式 代码 <!doctype html> <html lang="en"> <head> <meta charset="UT ...

  10. JS自制SEO框架(js案例)

    学习了JS一段时间,自己封装了一些日常码代码需要用到的框架,需要的小伙伴可以参考一下该框架主要功能有:阻止事件冒泡.阻止默认事件.获取元素.添加事件.删除事件.单个事件代理,多个事件代理.清除clas ...