COGS 2082. Asm.Def谈笑风生
★ 输入文件: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谈笑风生的更多相关文章
- Asm.Def谈笑风生
★ 输入文件:asm_talk.in 输出文件:asm_talk.out简单对比时间限制:2 s 内存限制:256 MB [题目描述] “人呐都不知道,自己不可以预料,直升机刚一出圣地亚哥 ...
- COGS——T2084. Asm.Def的基本算法
http://cogs.pro/cogs/problem/problem.php?pid=2084 ★☆ 输入文件:asm_algo.in 输出文件:asm_algo.out 简单对比时间 ...
- COGS——C2098. Asm.Def的病毒
http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆ 输入文件:asm_virus.in 输出文件:asm_virus.out ...
- cogs——2098. Asm.Def的病毒
2098. Asm.Def的病毒 ★☆ 输入文件:asm_virus.in 输出文件:asm_virus.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] “这就 ...
- COGS 2091. Asm.Def的打击序列
★★★ 输入文件:asm_lis.in 输出文件:asm_lis.out 简单对比时间限制:4 s 内存限制:256 MB [题目描述] 白色圆柱形的“蓝翔”号在虚空中逐渐变大,一声沉 ...
- COGS 2084. Asm.Def的基本算法
★☆ 输入文件:asm_algo.in 输出文件:asm_algo.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] “有句美国俗语说,如果走起来像鸭子,叫起来像 ...
- COGS 2098. Asm.Def的病毒
★☆ 输入文件:asm_virus.in 输出文件:asm_virus.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持 ...
- cogs——2084. Asm.Def的基本算法
2084. Asm.Def的基本算法 ★☆ 输入文件:asm_algo.in 输出文件:asm_algo.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] “有句 ...
- cogs 2098. [SYOI 2015] Asm.Def的病毒 LCA 求两条路径是否相交
2098. [SYOI 2015] Asm.Def的病毒 ★☆ 输入文件:asm_virus.in 输出文件:asm_virus.out 简单对比时间限制:1 s 内存限制:256 M ...
随机推荐
- 6、html的body内标签之超链接
一.超链接 <a href="https://www.baidu.com" target="_blank">某度</a> #target ...
- Flutter实战视频-移动电商-12.首页_GridView类别导航制作
12.首页_GridView类别导航制作 首页导航区的制作 外面用一个gridview来写.里面单独提出来 新建导航组件 还是在home_page.dart里面写代码 新建一个静态的组件: 快捷键写组 ...
- jQuery EasyUI API 中文文档 - Tree树使用介绍
用 $.fn.tree.defaults 重写了 defaults. 依赖 draggable droppable 用法 Tree 能在 <ul> 元素里定义,此标记可以定义为叶节点和子节 ...
- Swift异常处理
在Swift里,抛出的异常必须继承Error这个协议.那么这个协议是什么呢? 按住command再点击Error我们可以看到, public protocol Error { } extension ...
- TP5之验证码
处于安全的角度,我们一般都会使用tp5自带的验证码 直接上图,干就完了
- C++构造函数和拷贝构造函数详解
构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险. 每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含 ...
- Weekly Contest 78-------->809. Expressive Words (stack)
Sometimes people repeat letters to represent extra feeling, such as "hello" -> "he ...
- 51nod 1051【基础】
思路: 找题4级做做...然后找了题最水的.. = =感动...居然是一下子[记]得了做法... dp一下,枚举列的起点和终点,然后求和这一段,然后对这一大列就是求个最大字段和: #include & ...
- lightoj1004【基础DP】
从低端到顶端求个最大值: 思路: 基础DP,递推 #include<cstdio> #include<queue> #include<map> #include&l ...
- IT兄弟连 JavaWeb教程 JSP内置对象1
JSP内置对象定义 JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它们起到了简化页面的作用,JSP的内 ...