P3167 [CQOI2014]通配符匹配】的更多相关文章

「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通配符开头的字符串,如将 happy*birthdey?xingchen 分成: happy *birthday ?xingchen 然后设原串有 \(m\) 个通配符, \(op_i\) 表示分出来的第 \(i\) 个串前的通配符(\(0\) 没有,\(1\) 是?,\(2\) 是*),\(len_…
题目 题目大意 给出一个字符串,其中包含两种通配符 ‘?’和 ‘*’ ,‘?’可以代替一个字符,‘*’可以代替一个字符串(长度可以为0) 然后给出几个字符转,判断能否用给出的字符串表示出来 样例解释 给出字符串:*aca?ctc 判断字符串 :acaacatctc 此时用 * 代替 aba 用 ?代替了t,所以输出YES 解题思路 dp + hash 用hash预处理出字符串的前缀和, 方便判断两端字符是否相同 假设 给出字符串 为str1,  要判断的字符串为 str2 f[i][j]表示 第…
吐槽 本来是去写AC自动机的,然后发现数据范围每个串100000,有100个串(???),连塞进trie树里都塞不进去,玩个鬼的AC自动机啊,tag不要乱打啊 最后拿字符串hash+爆搜一发搜过去了... 思路 挺恶心的搜索吧 考虑分段,按?号和*号分段,对于每段内的hash判断是否一致,*号和?号按题意处理即可 然后边界不要写挂就好了 代码 #include <cstdio> #include <cstring> #include <algorithm> using…
Description 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号(“”’),可以匹配0个及以上的任意字符:另一个是问号(“?”),可以匹配恰好一个任意字符.现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. Input 第一行是一个由小写字母和上述通配符组成的字符串.第二行包含一个整数n,表示文件个数.接下来n行,每行为一个仅包含小写字母字符串,表示文件名列表. Output 输出n行…
题意 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号("*"),可以匹配0个及以上的任意字符:另一个是问号("?"),可以匹配恰好一个任意字符. 现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. 对于1 00%的数据,字符串长度不超过1 00000,1<=n<=100,通配符个数不超过10. 分析 参照DaD3zZ的题解. 感觉复杂度有点玄学的做法…
题目 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个 是星号(""'),可以匹配0个及以上的任意字符:另一个是问号("?"),可以匹配恰好一个任意字符. 现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. 输入格式 第一行是一个由小写字母和上述通配符组成的字符串. 第二行包含一个整数n,表示文件个数. 接下来n行,每行为一个仅包含小写字母字符串,表示文件名列表. 输出…
Description 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号(""'),可以匹配0个及以上的任意字符:另一个是问号("?"),可以匹配恰好一个任意字符. 现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. Input 第一行是一个由小写字母和上述通配符组成的字符串. 第二行包含一个整数n,表示文件个数. 接下来n行,每行为一个仅包含小写字母字符串,表示…
http://www.lydsy.com/JudgeOnline/problem.php?id=3507 (题目链接) 题意 给出一个主串,里面有些通配符,'*'可以代替任意字符串或者消失,'?'可以且仅可以代替一个字符.问能否用这个串匹配一些询问串. Solution 也许我zz了,半天写不出→_→ $f[i][j]$表示主串到第$i$个匹配符,询问串到第$j$个字符能否被匹配.转移很简单,hash一下就好了. 细节 在主串末尾添加一个'*'. 代码 // bzoj3507 #include<…
显然f[i][j]表示S匹配到第i个通配符,T匹配到第j个字符,是否可行. 一次一起转移两个通配符之间的所有字符,Hash判断. 稍微有点细节.常数极大卡时过排名倒数,可能是没自然溢出的原因. #include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,p1=,p2=; ][N…
传送门 Solution 显然用哈希233 设\(f[i][j]\)表示第i个通配符和当前第j个字符是否匹配 考虑两种通配符的特性,直接转移即可 Code #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define F(i,a,b) for(register int i=(a);i<=(b);…