★   输入文件: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. iOS中判断基础字符(大小写、数字等的判断)

    函数:isdigit 用法:#include 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零. 函数:islower 用法:#include 功能:判断字符c是否为小写英 ...

  2. Java--常识

    一:J2SE/J2ME/J2EE Java2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本.J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvir ...

  3. 性能测试之Jmeter学习(二)

    一.Jmeter的基本操作 1.添加|移除测试元件 2.加载和保存测试元件 3.配置测试对中的测试元件 4.保存测试计划 5.运行测试计划 6.终止测试 7.错误报告 二.Jmeter体系结构 注释: ...

  4. ElasticSearch基础之查询功能

    [01]查询类型: [02]基本查询和组合查询是参与打分的 1.创建映射: 注意事项:基于上面映射的创建: "type": "keyword" # 如果某个字段 ...

  5. Flutter实战视频-移动电商-41.详细页_数据接口的调试

    41.详细页_数据接口的调试 建立数据模型层,我们的业务逻辑分开,然后进行后台数据的调试 生成model类 json数据: { ", "message": "s ...

  6. 1、webpack课程介绍

  7. UVa 1658 Admiral (最小费用流)

    题意:给定一个图,求1-n的两条不相交的路线,并且权值和最小. 析:最小费用流,把每个结点都拆成两个点,中间连一条容量为1的边,然后一个作为入点,另一个是出点.最后跑两次最小费用流就行了. 代码如下: ...

  8. 使用ant时 出现 java.lang.OutOfMemoryErro r: Java heap space的解决办法

    在Linux的shell中,使用export设置ANT_OPTS变量,值为1G export ANT_OPTS=-Xmx1g ant 同理在windows的cmd中,使用set设置ANT_OPTS变量 ...

  9. Android NDK开发指南(一) Application.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2381586.html Application.mk目的是描述在你的应用程序中所需要的模 ...

  10. 骨骼动画反向动力学(IK)的实现

    反向动力学,Inverse Kinematics,简称IK.简单地说,由父骨骼的方位和子骨骼的相对变换得到子骨骼的方位,称为正向动力学(Forward Kinematics,FK):而IK则是先确定子 ...