题面 传送门 思路 0x01 KMP 一个非常显然而优秀的想法:把模板串按照'*'分段,然后对于每一段求$next$,'?'就当成可以对于任意字符匹配就行了 对于每个文本串,从前往后找第一个可以匹配的地方,可以证明,一段字符越靠左,结果一定越优 找到了一个匹配位置以后往后跳,同时换成更新的一段模板串,一直匹配到模板串没有了为止 听起来很不错,是吗?代码看着也很简fu洁za: #include<iostream> #include<cstdio> #include<cstrin…
3507: [Cqoi2014]通配符匹配 Time Limit: 10 Sec  Memory Limit: 128 MB Description 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号(“”’),可以匹配0个及以上的任意字符:另一个是问号(“?”),可以匹配恰好一个任意字符.现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. Input 第一行是一个由小写字母和上述通配符组成的字…
题意:给定一个句子str,和一个单词sub,这个单词sub可以翻译成两种不同的意思,问这个句子一共能翻译成多少种不能的意思 例如:str:hehehe   sub:hehe 那么,有**he.he**.和hehehe三种不同的意思, 考虑一下aaadaaa这种情况?sub:aa  前面的aaa有三种,后面的aaa有三种,所以一共应该是有9种情况. 可以考虑成3*3=9 如果你考虑分块去相乘的话,那么恭喜你,你GG了.因为这样写非常复杂,而且非常难判断. 可以考虑下dp,因为注意到,它每个单词只有…
https://cn.vjudge.net/problem/20907/origin 长度是 n 的字符串 s,如果它自身是回文数,且它的长度为 的前缀和后缀是 (k - )-回文数,则它被称作 k-回文数.按照定义,任何字符串 (甚至空字符串) 都是 -回文数. 字符串 s 的回文度,被定义为这样的一个最大数 k,满足 s 是 k-回文数.例如, . 给定一个字符串.您的任务是,找出它的全部前缀的回文度之和. 输入 输入数据的第一行,包含了一个非空的字符串,由拉丁字母和数字组成.字符串的长度,…
问题:想使用Unix Shell 中常用的通配符(比如*.py , Dat[0-9]*.csv 等) 去匹配文本字符串 解决方案: 1. fnmatch 模块提供了两个函数—— fnmatch() 和fnmatchcase() ,可以用来实现这样的匹配. 用法如下:>>> from fnmatch import fnmatch, fnmatchcase>>> fnmatch('foo.txt', '*.txt')True>>> fnmatch('foo…
首先可以对n个目标串单独进行处理. 对于每个目标串,考虑把模式串按'*'进行划分为cnt段.首尾两段一定得于原串进行匹配.剩下的cnt-2段尽量与最靠左的起点进行匹配. 对于剩下的cnt-2段.每段又可以通过‘?’划分为k个子串.对每个子串求出hash值.然后通过枚举起点与目标串的某个区间的hash进行判断. 就可以在O(k)的时间进行每一次的枚举了.对于目标串区间的hash值.可以通过预处理hash前缀进行O(1)询问. 而最多进行len次枚举.所以总复杂度为O(n*len*k). 另外判断子…
3507: [Cqoi2014]通配符匹配 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 372  Solved: 156[Submit][Status][Discuss] Description 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号(“”’),可以匹配0个及以上的任意字符:另一个是问号(“?”),可以匹配恰好一个任意字符.现在需要你编写一个程序,对于给定的文件名列表和一个包…
题意 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个是星号("*"),可以匹配0个及以上的任意字符:另一个是问号("?"),可以匹配恰好一个任意字符. 现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. 对于1 00%的数据,字符串长度不超过1 00000,1<=n<=100,通配符个数不超过10. 分析 参照DaD3zZ的题解. 感觉复杂度有点玄学的做法…
正解:哈希+dp/AC自动机/kmp 解题报告: 传送门! 这题解法挺多的,所以就分别港下好了QwQ 首先港下hash+dp趴 可以考虑设dp式f[i][j]:匹配到第i个通配符了,下面那个字符串匹配到第j位了是否可行 转移的话就只要关心两个通配符之间的那一段是否相等就好 那判断相等就应该要想到哈希鸭,就做完了 啊有点儿简洁,,, 思路挺简单的主要细节比较多趴,所以我等下直接放代码好了QwQ 然后说下AC自动机 就先按'*'通配符分成几段,然后对每段独立地分别做 然后下面当每段之间相对独立,说下…
题目 几乎所有操作系统的命令行界面(CLI)中都支持文件名的通配符匹配以方便用户.最常见的通配符有两个,一个 是星号(""'),可以匹配0个及以上的任意字符:另一个是问号("?"),可以匹配恰好一个任意字符. 现在需要你编写一个程序,对于给定的文件名列表和一个包含通配符的字符串,判断哪些文件可以被匹配. 输入格式 第一行是一个由小写字母和上述通配符组成的字符串. 第二行包含一个整数n,表示文件个数. 接下来n行,每行为一个仅包含小写字母字符串,表示文件名列表. 输出…