![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_字符串
文章平均质量分 79
王的守护者
大水逼
展开
-
UVA4769 Trie树+剪枝
很不错的一道字典树的题,把字典里的单词建成Trie树,每个节点维护一个以这个节点为根的子树有多少个单词,还有一个是当前节点有没有在这次询问中被搜索到,然后匹配的时候每次达到询问串的终点时把这个点标记一下,搜索过程中遇到的点也标记一下,然后再DFS一遍,这样保证不会搜索到字符串未遍历过的点,这个剪枝很重要。 #include #include #include #include #def原创 2013-11-18 17:38:09 · 979 阅读 · 0 评论 -
hdu3065 AC自动机
挺裸的一个AC自动机的题,但是网上的题解基本都有些问题,主要有两个,一个是在沿fail指针向上更新时很多人都是遇到节点的count为0时直接跳出的,这没有任何道理吧。。。还有一个就是就算不直接跳出来遇到极限数据这样做也会TLE,我们应该先跑一边自动机,跑的时候不要沿fail指针向上更新,我们最后才按节点的拓扑序一次统计。不过这题数据太弱了怎么做都能过就是了。。。 #include #in原创 2013-11-20 16:07:57 · 735 阅读 · 0 评论 -
hdu2296 AC自动机
AC自动机水题,随便写写就过了,注意记录最优的字符串,保证同等分值情况下最短,长度相同的时候字典序最小就行了。 #include #include #include #include #define N 1100 #define Max 26 typedef long long LL; using namespace std; struct node { int id,num;原创 2013-11-21 21:40:13 · 801 阅读 · 0 评论 -
hdu3341 AC自动机
这题没意思,卡时间卡的太紧了,主要就是知道这种类型的状态压缩怎么写就好了。 假设ACGT的总数分别为num[0],num[1],num[2],num[3],那么对于ACGT的数量分别为ABCD的状态可以记录为: A*(num[1]+1)*(num[2]+1)*(num[3]+1) + B*(num[2]+1)*(num[3]+1)+ C*原创 2013-11-21 20:35:16 · 975 阅读 · 0 评论