【枚举+trie+dfs】CF514 C

这篇具有很好参考价值的文章主要介绍了【枚举+trie+dfs】CF514 C。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Problem - 514C - Codeforces

题意:

【枚举+trie+dfs】CF514 C,枚举,字符串,搜索与搜索剪枝,深度优先,算法 

思路:

其实是trie上dfs的板题

先把字符串插入到字典树中

对于每次询问,都去字典树上dfs

注意到字符集只有3,因此如果发现有不同的字符,去枚举新的字符

Code:文章来源地址https://www.toymoban.com/news/detail-626124.html

#include <bits/stdc++.h>

using i64 = long long;

using namespace std;

const int N = 4e5 + 10;
const int M = 3e6 + 10;
const int P = 131;

string s;

int tot = 0;
int tag[N];
int tr[N][30];

void insert(string x) {
	int p = 0;
	for (int i = 0; i < x.size(); i ++) {
		int u = x[i] - 'a';
		if (! tr[p][u]) {
			tr[p][u] = ++tot;
		}
		p = tr[p][u];
	}
	tag[p] = 1;
}
bool dfs(int dep, int u, int num) {
	if (s[dep]) {
		int v = s[dep] - 'a';
		if (tr[u][v]) {
			if (dfs(dep + 1, tr[u][v], num)) return true;
		}
		if (!num) {
			for (int j = 0; j < 3; j ++) {
				if (j != v && tr[u][j]) {
					if (dfs(dep + 1, tr[u][j], num + 1)) return true;
				}
			}
		}
	}
	else if (tag[u] && num) return true;
	return false;
}
void solve() {
	int n,m;
	cin >> n >> m;

	for (int i = 1; i <= n; i ++) {
		cin >> s;
		insert(s);
	}

	for (int i = 1; i <= m; i ++) {
		cin >> s;
		if (dfs(0, 0, 0)) {
			cout << "YES" << "\n";
		}else {
			cout << "NO" << "\n";
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int t = 1;
	//cin >> t;
	while(t --) {
		solve();
	}
	return 0;
}

到了这里,关于【枚举+trie+dfs】CF514 C的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • (三)SV结构体、枚举类型、字符串

    (三)SV结构体、枚举类型、字符串

    1、SV结构体与C语言中结构体对应 说明: student:结构体类型名,可以忽略不写的 student1, student2:结构体变量名 内部的变量:成员变量名   但常常用typedef来新定义类型,就是对其他类型取别名,方便定义变量 ,例如:  typedef struct {bit [7:0] r, g, b;} pixel_s1;//pixel_s就是对struct {bit

    2024年02月15日
    浏览(9)
  • C 语言结构体和枚举完全指南:成员访问、字符串操作、枚举基础

    要访问结构体的成员,请使用点语法 (.): 现在您可以使用只使用一个结构体,轻松创建多个具有不同值的结构体变量: 请记住,C 语言中的字符串实际上是字符数组,不幸的是,您无法像这样为数组分配值: 会发生错误: prog.c:12:15: error: assignment to expression with array type 但是,

    2024年02月02日
    浏览(15)
  • 如何从Java中的字符串值中获取枚举值

    说我有一个枚举,它只是 我想找到一个字符串的枚举值,例如 “A” 这将是 Blah.A。怎么可能做到这一点? Enum.valueOf() 是我需要的方法吗?如果是这样,我将如何使用它? 保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com 是的

    2024年02月16日
    浏览(14)
  • 【每日一题Day217】LC2451差值数组不同的字符串 | 枚举+变量记录

    给你一个字符串数组 words ,每一个字符串长度都相同,令所有字符串的长度都为 n 。 每个字符串 words[i] 可以被转化为一个长度为 n - 1 的 差值整数数组 difference[i] ,其中对于 0 = j = n - 2 有 difference[i][j] = words[i][j+1] - words[i][j] 。注意两个字母的差值定义为它们在字母表中 位置

    2024年02月07日
    浏览(13)
  • 【搜索】DFS剪枝与优化

    算法提高课笔记 剪枝 是什么意思呢? 我们知道,不管是内部搜索还是外部搜索,都可以形成一棵搜索树,如果将搜索树全部遍历一遍,效率会很低,但如果我们能在搜索的过程中,提前预知,判断某一些不可能是正确答案的情况,就可以不用遍历其下的子树,从而提高我们

    2024年02月14日
    浏览(12)
  • js截取字符串 记录日常开发中的小搜索

    在 JavaScript 中,可以使用 substring() 和 substr() 方法来截取字符串。 substring(startIndex [, endIndex]) 方法用于从字符串中提取子字符串。 startIndex 参数是必需的,表示要截取的子字符串的起始位置。 endIndex 参数是可选的,表示要截取的子字符串的结束位置。如果省略,则将截取到字

    2024年02月02日
    浏览(14)
  • DFS(基础,回溯,剪枝,记忆化)搜索

    DFS(基础,回溯,剪枝,记忆化)搜索

    DFS(深度优先搜索) 基于递归求解问题,而针对搜索的过程 对于问题的介入状态叫初始状态,要求的状态叫目标状态 这里的搜索就是对实时产生的状态进行分析检测,直到得到一个目标状态或符合要求的最佳状态为止。对于实时产生新的状态的过程叫扩展 搜索的要点: 1.选定初

    2024年04月12日
    浏览(11)
  • C#,字符串匹配(模式搜索)Sunday算法的源代码

    C#,字符串匹配(模式搜索)Sunday算法的源代码

    Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。 核心思想:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。 Sunday算法思想跟

    2024年01月23日
    浏览(15)
  • 第五章 使用 SQL Search - 验证 SQL 搜索项字符串

    可以使用 %iFind.Utils.TestSearchString() 在方法来验证 search_items 字符串。此方法使能够检测语法错误和逻辑运算符的不明确使用。例如, “word1 AND word2 OR word3” 未通过验证,因为它在逻辑上不明确。添加括号可将此字符串澄清 为“word1 AND (word2 OR word3)”或“(word1 AND word2) OR word3”

    2024年01月23日
    浏览(15)
  • (搜索) 剑指 Offer 38. 字符串的排列 ——【Leetcode每日一题】

    (搜索) 剑指 Offer 38. 字符串的排列 ——【Leetcode每日一题】

    难度:中等 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面 不能有重复元素 。 示例: 输入:s = “abc” 输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制 : 1 = s 的长度 = 8 💡思路:回溯 可以直接 暴力穷举 ,但

    2024年02月12日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包