数据结构
文章平均质量分 81
wxy__
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 3473(划分树)
划分树。第二次写划分树,累的要死,回头发现第一次写的是错的……-_-||,看来poj2104的数据太弱了……x取中位数ave,用sum[dep][i]保存划分的dep层前i个之和,查询时通过这个算出比ave小(大)的之和,计算即可。提交后一直runtime error,无奈,最后还是借鉴了这篇文章:http://www.cnblogs.com/AndreMouche/archive/2原创 2011-10-03 01:14:52 · 826 阅读 · 0 评论 -
poj 3225(线段树)
线段树,用 a*2 代表 a 这个点,a*2+1 代表 (a, a+1) 这一段。五种操作都归结于区间 T 内外的覆盖和取反。具体情况参见一下代码。#include using namespace std;#define LEN (65536+1)*2#define LS (rt*2)#define RS (rt*2+1)#define原创 2011-10-22 11:58:23 · 761 阅读 · 0 评论 -
POJ2449 K短路
SPFA + A*先计算反向图T为源点的最短路dis[]。再做A*, 状态h值为dis[X], g值便是走过的路径长度和, 第K次出的解即为所求最短路。注意A*时不能有一般的最优剪枝,因为所求的是第K次出的解,剪枝会引起错误。代码:#include #include #include using namespace std;#define INF原创 2011-11-27 13:34:22 · 672 阅读 · 2 评论 -
POJ 1625
AC自动机 + DP + 高精度一开始开始犯蠢用矩阵相乘……好不容易搞定爆栈的问题又超时……后来发现还是直接dp的时间复杂度低……用 F[i][j] 表示 i 长的单词到 j 状态有多少种方法,则有 F[i][j] = sum{ F[i-1][k] } (k->j 可行 且j没有被标记)#include #include #include #include using nam原创 2012-04-03 16:01:17 · 1169 阅读 · 0 评论 -
AVL树 实现代码
自己写的一个AVL树模板(未加data,只有key),代码比较短小紧凑。ps:算起来class的内容也不过50来行,我到觉得avl树比sbt实现简单多了……仅稍复杂于treap#include using namespace std;#define zero(arr) (memset(arr, 0, sizeof(arr)))const int MAXN = 2000000原创 2012-02-20 10:59:00 · 649 阅读 · 0 评论 -
后缀数组 poj3693
罗大神论文里的题目……设 $ 为一个字符串, str = abcd$$$$cdef, 则可以看出答案是 $$$$ 那用 $$$$... 与 $$$... 比较最长前缀,肯定能得到$$$所以枚举 $ 的长度len和位置i,找以从 i 开始的后缀和以 i+len 开始的后缀的最长前缀但如果每个位置都枚举就太慢了,所以只枚举len, 2*len, 3*len 的位置。如果 $ 被这些原创 2012-05-31 00:41:26 · 754 阅读 · 0 评论 -
zerojudge 空罐 Cans
AC 自动机+DP……F[L][J]表示长度为L的基因在J的位置的个数。因为基因要变短,转移时要讨论L是否小于J位置串长度,转移到fail指针的位置。(因为一个白痴错误debug了一个晚上……切记要转移病毒中的病毒啊!)#include #include using namespace std;#define CC(A,x) memset(A, x, sizeof(A))#de原创 2012-05-18 21:54:14 · 723 阅读 · 0 评论 -
AC自动机
AC自动机个人较浅的理解就是kmp的扩展,trie+kmp处理多个字符串匹配。下面的是我的模板:注:此模板根据notonlysuccess大牛的模板更改而来,代码更短,但速度有些下降,因为在init()内做了大量的的memset()#define FOR(i,n) for(int i=0; i<n; i++)#define CC(A,x) memset(A,x,size原创 2012-03-25 16:17:31 · 450 阅读 · 0 评论
分享