题目链接  Watto and Mechanism

题意  给出$n$个串(相当于字典),然后给出$m$个询问。

每个询问以字符串的形式给出,你需要改变这个字符串中的任意一个字符

(必须改变且只能改变一个)

如果改变之后可以成为$n$个串中的一个字符串,则输出$YES$, 否则输出$NO$。

字母集合为$\left\{ a, b, c \right\}$

考虑字典树。

首先把$n$个单词插入字典树中。

询问的时候用$dfs$,$flag$表示搜索到当前是否已经改变过一个字符。

如果已经改变过那只能按照当前剩下的字符串一条路查询下去。

否则可以按老字符或新字符进行查询。

(这题很卡内存)

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) const int N = 2e7 + 3; char s[600010];
int n, q, ans, len, tot = 0;
int ch[N][3];
bitset <N> cnt; int newnode(){
++tot;
rep(i, 0, 2) ch[tot][i] = 0;
cnt[tot] = 0;
return tot;
} void insert(char* s){
int now = 0;
for (int i = 0; s[i]; ++i){
int w = s[i] - 'a';
if (!ch[now][w]) ch[now][w] = newnode();
now = ch[now][w];
}
cnt[now] = 1;
} void dfs(int x, int flag, int now){
if (ans) return;
if (x == len && flag && cnt[now]){ ans = 1; return;}
if (x >= len) return;
if (flag){
int w = s[x] - 'a';
if (ch[now][w]) dfs(x + 1, flag, ch[now][w]);
} else{
rep(i, 0, 2)
if (i != s[x] - 'a' && x + 1 == len && ch[now][i] && cnt[ch[now][i]]) ans = 1; rep(i, 0, 2) if (i != s[x] - 'a' && ch[now][i]){
dfs(x + 1, 1, ch[now][i]);
} int w = s[x] - 'a';
if (ch[now][w]){
dfs(x + 1, flag, ch[now][w]);
} }
} int main(){ scanf("%d%d", &n, &q);
rep(i, 1, n){
scanf("%s", s);
insert(s);
} rep(i, 1, q){
scanf("%s", s);
len = strlen(s);
ans = 0;
dfs(0, 0, 0);
puts(ans ? "YES" : "NO");
} return 0;
}

最新文章

  1. 戴尔灵越15-5000/3558等系列修改BIOS设置U盘启动
  2. ubuntu下C++连接mysql数据库
  3. Linux 添加完硬盘后,如何挂载和分区、以及其他的分区不足,如何从新的硬盘上挂载借用
  4. python学习:环境搭建
  5. System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
  6. pyinstaller打包pyqt文件
  7. ThreadLocal的正确用法
  8. [reprint]如何编写引导程序 Hello World
  9. Linux C 程序 信号及信号的处理(19)
  10. MVC - 布局
  11. Django 邮件推送 解决附件中文名字乱码
  12. sqoop 1.4.4-cdh5.1.2快速入门
  13. 一个数n的最大质因子
  14. 安卓Android的内存管理原理解析
  15. MySQL中字段类型为timestamp的小坑
  16. bzoj 2004: [Hnoi2010]Bus 公交线路
  17. Angular4基本网络请求get、post方式
  18. 剑指offer——python【第37题】数字在排序数组中出现的次数
  19. Vue中 等待DOM或者数据完成 在执行 --this.$nextTick()
  20. Windows10+Python3+BeautifulSoup4 安装

热门文章

  1. 【转】Intellij Idea识别Java Web项目
  2. github+hexo+themes搭建简易个性主题博客
  3. Bootstrap 网格系统(Grid System)实例4
  4. javaEE(4)_response、request对象
  5. rhel7.3smb安装配置
  6. shell基础笔记1
  7. linux运维中常用的指令
  8. 【Python学习之二】装饰器
  9. 如何用DOM 元素就能画出国宝熊猫
  10. **没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案