trie
文章平均质量分 78
NightRaven
cust
展开
-
POJ3630 Phone List
题意给N个电话号码,检测是否存在一个电话号码是另外一个电话号码的前缀,存在输出NO否则输出YES。trie树的模板题,正好拿来试试模板。只要在每次insert的时候检测一下经过的路径存不存在单词节点就行。另外在插入完成时也要判断一下当前的单词节点在不在其他单词的路径上。#include #include #include #include #include using names原创 2013-07-21 22:43:50 · 644 阅读 · 0 评论 -
hdu1251 统计难题 trie
顺手水了一道trie,原来都是直接写静态的,这次用后缀自动机的存储方式写了一下,写成这种“伪动态”的存储方式即比静态的省空间,而且也没写动态的那么多麻烦。题目的话,插入的时候沿路径吧每个节点的权值加一,统计的时候直接输出当前前缀走到底时的节点上的权值即可。走空就是0了。#include #include #include #include #include #include原创 2013-09-28 21:02:03 · 724 阅读 · 0 评论 -
hdu2825 Wireless Password AC自动机+状压DP
告诉你一个密码的长度是n,然后给m个单词,并且告诉你这串密码至少包含k个单词(单词可以重叠),求密码可能的种数对20090717取模。一开始脑残把题读错了-看成要包含所有m个单词...WA到死,发现后一改直接A掉了....dp[l][i][sta]表示当前长度为l,在自动机上的i状态,单词包含的状态是sta,然后四重循环,直接按dp[l+1][tree[i][c]][sta|ok[tree[i][原创 2013-10-05 13:41:01 · 874 阅读 · 0 评论 -
hdu4758 Walk Through Squares AC自动机(trie图)DP
提议大致是给n,m,再给两个非空的不相同的只包含R或D字符串s1,s2,问用n个R,m个D可以组成多少种包含s1,s2的字符串。大致思路的话,先根据两个字符串构造trie图,其实就是把失配函数优化掉的ac自动机。之后用dp[i][x][y][k]表示在自动机上状态i,用x个R,y个D,包含s1,s2的状态原创 2013-10-02 10:22:50 · 1039 阅读 · 0 评论 -
hdu2457 & poj3691 DNA repair AC自动机+DP
乱搞了一下竟然1A了...太感动了....先给n个病毒DNA序列,再给一个长串。问最少修改长串几个字符,可以让它不包含任何一个病毒序列。拿病毒的序列构造AC自动机,之后再自动机上搞DP,用dp[l][i]表示当前长度为l,自动机上的状态为i时,最少的字符修改数.循环A,T,G,C四种方案,在添加该字符之后的状态为安全的前提下,如果当前方案和母串的第l为刚好相同,那么直接用dp[l][i]去更新dp原创 2013-10-05 16:48:10 · 848 阅读 · 0 评论