数据结构
文章平均质量分 78
cling_clang_233
haofan...
展开
-
LA3942 remember the word trie+dp
题意:给出n个单词组成字典,再给出一个目标字符串,求把这个字符串分解成若干个单词的连接方案(字典中的单词可以重复使用)。比如:输入 abcd, 再给出四个单词a, b, ab, cd。abcd可以分解为(a, b, cd), 或(ab, cd), 共两种方案想法为:用dp[i]表示从i开始的后缀,则dp(i)=sum{d(i+len(x))|单词x是s[i...L]的前缀}具体解释:以原创 2013-08-26 14:20:10 · 578 阅读 · 0 评论 -
UVa 11732 strcmp()函数 trie
QvQ终于搞出来的,条件判断略多题意是:给出n个字符,用strcmp()来对它们两两这间相互比较,求要比较总次数n在[1~4000]之间strcmp()的比较方法很有意思,会对两个字符串对应位置进行比较,如果相同再比较是否为'/0',所以对于“a”和"a"这两上字符串,要比较4次第一次,比较'a'和'a',发现它们相同,再看‘a'是否等于'\0',不等于,继续比较,到目前为止,比较原创 2013-08-28 14:16:14 · 534 阅读 · 0 评论 -
LA 4670 dominating patterns AC自动机
题意:有n个模板串,给出一个文本串T,求哪个模板串出现的次数最多,注意可能有重复模板串,因为要用到map来标记做了几天自动机,照着模板来,到现在基本理解,真是满眼泪……这道题算是比较典型的自动机了(基本上就是裸题了吖QvQ),主要即判重,利用map来好方便要判重是因为,比如重复输入abaaba那么在第一次插入的时候,val[最后一个a的节点]=1在第二次插入时,val[原创 2013-09-02 22:35:34 · 557 阅读 · 0 评论 -
UVa 11019 Matrix Matcher AC自动机 二维匹配
先给出n*m的字符矩阵T,再给出一个x*y的模板字符矩阵P,问P在T里出现了多少次这算是二维的查找了,这挺有意思的,一维的单个模板串匹配用KMP,多个的话升级到树,当一维升级到二级,多个又降回到了单个……嗯,回来说下这道题……基本算法已经很明了……如果T含P,至少,T包含P的每一行,即至少,必然存在T的某行包括P的某行因此,先把P的每行构造成自动机,再一行行地判断T,开一个二维数组原创 2013-09-02 23:58:33 · 670 阅读 · 0 评论 -
hdu 1710 binary tree traversals 二叉树遍历
根据二叉树的前序遍历和中序遍历求后序遍历的题。一开始的方法是根据前序遍历和中序遍历构建二叉树,再从二叉树开始后序遍历。事实证明我还是too young too naive,一开始还好好的,后来这递归被我越写越糟糕,都看不下去了,好不容易程序运行起来了,对了下答案也没问题,就交了上去,结果返回了RE……………………好难过啊QAQ于是去搜题解,发现有人说用结构构建树用了太多空间导致RE,但原创 2013-09-30 09:39:47 · 756 阅读 · 0 评论 -
poj1032 Trees made to order 卡特兰数应用
这道题的递归也想了超级久,虽然我已经知道卡特兰数了……感觉这是个非常奇特的数列了,先看下递推公式c[n+1]=(2*(2*n+1))*c[n]/(n+2);这个数列又是和排列组合相关的,虽然在不知道前,推过二叉数的组合方式,隐隐觉得应该是排列组合,但没想到到底是什么公式,查了题解才知道(到现在只是用到了结论,具体怎么推出来的还不太清楚 Orz)。c[n]代表着节点为n的二叉树有多少种组原创 2013-09-30 16:38:14 · 793 阅读 · 0 评论 -
poj2002 squares 哈希 计算几何
题意,给出平面上n个点,求能形成的正方形个数挺简单的题,用两个点来枚举。首先把所有的点用哈希函数处理后存起来,然后枚举两个点,以这两点为正方形同一边的两顶点,求出另外顶点的位置,然后查找这两个点是否存在即可。这题用的静态链表做的,当成练习。同时注意下哈希函数,发同用x*x+y*y会TLE,毕竟也可能会有挺多相同的,然后为了区别x和y的正负性,把哈希函数改成x*x+y*y+x+y,我觉得这个原创 2013-10-01 14:14:49 · 590 阅读 · 0 评论