
数据结构
文章平均质量分 82
guognib
这个作者很懒,什么都没留下…
展开
-
c++ STL hash_map 使用
http://blog.youkuaiyun.com/ddkxddkx/article/details/6555754原创 2014-10-10 12:02:42 · 878 阅读 · 0 评论 -
LA 4513 Stammering Aliens 字符串hash
字符串hash模板,本题是求,给定字符串s中至少出现m次的最长字符串长度,及此时起始位置的最大值LA 4513 Stammering Aliens//#pragma warning (disable: 4786)//#pragma comment (linker, "/STACK:16777216")//HEAD#include #include #include #inc原创 2014-05-03 21:56:09 · 912 阅读 · 0 评论 -
cf244D. Match & Catch 字符串hash (模板)或 后缀数组。。。
D. Match & Catch可以用各种方法做,字符串hash,后缀数组,dp,拓展kmp,字典树。。。字符串hash(模板)http://blog.youkuaiyun.com/gdujian0119/article/details/6777239BKDR Hash Function :// BKDR Hash Function unsigned int BKDRHash(c原创 2014-05-03 19:06:15 · 1350 阅读 · 0 评论 -
cf 420D. Cup Trick (Splay树)
Splay 树的比较基本的序列维护操作, 用getSeg( int l, int r) 获取要操作的区间若:获取区间[l,r],非空,getSeg(l,r),然后KT指向区间[l,r]若:获取区间为空,如当要在l位置插入一个值时,则getSeg(l,l-2),然后可在KT赋值新节点D. Cup Trick#include #include #include #include原创 2014-04-29 16:24:09 · 1169 阅读 · 0 评论 -
树链剖分 375. Query on a tree
树链剖分并不是一个复杂的算法或者数据结构,只是能把一棵树拆成链来处理而已,换一种说法,树链剖分只是xxx数据结构/算法在树上的推广,或者说,树链剖分只是把树hash到了几段连续的区间上。主要参考kuangbin :http://www.cnblogs.com/kuangbin/category/507663.html以及 http://blog.sina.com.cn/s/blog_7a原创 2013-10-20 22:53:30 · 784 阅读 · 0 评论 -
KMP小记
参考:http://www.cnblogs.com/yefeng1627/archive/2013/04/28/3050027.htmlKMP用的是白书的模板(1)关于KMP的理解,和拓展KMP的理解KMP是和串的前缀的后缀的最大匹配长度,拓展KMP是和串的后缀的前缀的最大匹配长度(2)next的几个性质:1)next的代表含义a.next[i]表示比配到i失配是,原创 2014-03-08 14:07:15 · 901 阅读 · 0 评论 -
cf234
B. Inna and New Matrix of Candies若果将题目中的all lines of the matrix where dwarf is not on the cell with candy改成some lines of the matrix where dwarf is not on the cell with candy 即将all改成some应如何做???原创 2014-03-07 17:14:22 · 1622 阅读 · 0 评论 -
uva12538 Version Controlled IDE(可持续化Treap * 模板, STL ext/rope(块状链表))
uva12538 Version Controlled IDE(可持续化Treap * 模板, STL ext/rope(块状链表))学习:http://www.2cto.com/kf/201401/273863.html本题是可持续化Treap 的基本题目,虽然可持续化的Treap基本操作不难,但是还没什么深研究,留作模板可持续化数据结构还是用不好,待深入学习:范浩强谈数据结构原创 2014-03-05 19:21:15 · 1968 阅读 · 0 评论 -
划分树几道题目
主要参考kuangbin博客个人感觉划分树是基于快速排序的分治的思想,是把快速排序每个过程记录下来而已(借助快速排序也是可以快速求整个区间第k值的)对于每个区间,找中间值比较分成两个子区间,再递归处理划分树Hdu4251(区间第k值)typedef long long LL;typedef unsigned long long ULL;typedef vector VI;c原创 2014-02-27 19:22:07 · 1029 阅读 · 0 评论 -
主席树几道题目
主要参考cxlove博客kuangbin博客感觉主席树和划分树有类似之处,分治的思想Poj2104 主席树静态区间第k值以每个位置为起点,建立一棵主席树,保存后缀区间的情况。每个节点保存的是该后缀在相应区间数的个数const int MAXN = 100010;const int MOD = 1000000;int a[MAXN], t[MAXN];int T[M原创 2013-12-04 16:54:57 · 1681 阅读 · 0 评论 -
归并树一题
个人感觉相对划分树而言,归并树是基于归并排序的分治思想(归并排序也可以快速求逆序数)归并树 hdu4417Super Mario (求给定数在给定区间的中比它小的数的个数,或大小位置)(求逆序数)typedef long long LL;typedef unsigned long long ULL;typedef vector VI;const int INF = 10000000原创 2013-12-04 14:07:45 · 979 阅读 · 0 评论 -
cf 85 E. Petya and Spiders
http://codeforces.com/contest/112/problem/E轮廓线dp。每个格子中的蜘蛛选一个去向,最终,使每个蜘蛛都有一个去向,同时保证有蜘蛛的格子最少。需要用4进制模拟此题还可以用DLX+二分来解,这个解法相对于轮廓线dp就很无脑了,不用考虑细节。以后再补上#include #include #include #include #include原创 2014-04-17 21:04:41 · 1054 阅读 · 0 评论 -
UVA11107 后缀数组(new模板)
以前的模板和题目白书例题,基本模板,多个串连接时的处理,二分加分组的处理。注意n和m的值n为字符个数m为最大字符值+1分组时,分出来的区间是[ ),左闭右开idx[],的有效只是1-t-1,为t表示自己添加的字符#include #include #include #include using namespace std;const int maxn =原创 2014-05-05 12:10:56 · 1209 阅读 · 0 评论 -
hdu5044 Tree 树链剖分,点剖分,边剖分,非递归版
hdu5044 Tree 树链剖分,点剖分,边剖分,非递归版//#pragma warning (disable: 4786)//#pragma comment (linker, "/STACK:16777216")//#pragma comment(linker, "/STACK:60400000,60400000")//HEAD#include #include #i原创 2014-10-06 18:57:06 · 1248 阅读 · 0 评论 -
bnu36905 Nested Segments 离散化+线段树
bnu36905 Nested Segments离散化+线段树区间更新也可以用离散化+set(或双向链表)#include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2014-08-11 19:20:51 · 667 阅读 · 0 评论 -
bnu36907 Subpalindromes 字符串hash+线段树
bnu36907 Subpalindromes字符串hash+线段树题意:给一个字符串(1)将指定位置的字符改为c2)询问l-r的子串,是否是回文串。解法 :区间维护pl和pr,表示从左到右的hash和从右到左的hash,然后在up和query中合并区间,最后判断pl和pr是否相等即可。#include #include #include #include #inc原创 2014-08-11 19:29:30 · 965 阅读 · 0 评论 -
ZOJ Monthly, March 2014,3765 Lights (Splay 基本操作,并维护区间上的信息 * 模板)
ZOJ Monthly, March 2014,3765 Lights 基本上是Splay 的基本操作,并维护区间上的信息留作模板,写下对Splay树的理解和注意的问题。(1)版本选择:关于Splay的模板有网上流传的版本和刘汝佳白书的版本,个人感觉白书上的更好些,但基于网上参考比较多选择了网上版本(2)关于Splay树通常有维护序列和平衡树两方面的应用(3)!注意:up和down原创 2014-03-03 20:37:25 · 1390 阅读 · 0 评论 -
HDU 4578 线段树区间更新(确定区间操作的优先级)
HDU 4578线段树区间更新操作有:区间所有数add(c)区间所有数mul(c)区间所有数set(c)查询有:区间所有数的p次方和(p>= 1 && p 关键是区间更新的三种操作的优先级的确定清楚关键是:down和update中对区间的更新操作是一回事,可以写成函数方便编程//#pragma warning (disable: 47原创 2014-05-08 17:25:14 · 1105 阅读 · 0 评论 -
DLX hdu2295 Radar
DLX + 二分半径#include#include #include #include #include #include using namespace std;const int maxn = 55 * 55;const int maxr = 55;const int maxc = 55;int U[maxn],D[maxn],L[maxn],R[maxn],C[原创 2014-04-16 15:33:13 · 720 阅读 · 0 评论 -
后缀数组简单总结
主要参考:http://hi.baidu.com/ahnkftravhdhkyr/item/cc38703dd46547cd392ffab1及cxlove博客主要是论文一些题解和其它题目的主要题解一般的模板:#include #include #include #include #include #include #include #incl原创 2013-12-05 19:04:13 · 1257 阅读 · 0 评论 -
DLX (精确区间覆盖,重复区间覆盖)(模板)
参考:白书http://www.cnblogs.com/jh818012/p/3252154.htmlhttp://blog.youkuaiyun.com/fp_hzq/article/details/6795027需要注意的是(1)行列id的hash(2)行编号从1开始,列编号为1~c,结点0为表头结点(3)sz和ans等的初始化操作!!!精确区间覆盖原创 2014-04-16 14:21:41 · 1360 阅读 · 0 评论 -
DLX SPOJ 1771 Yet Another N-Queen Problem (八皇后变形)
网上模板ac:#include #include #include using namespace std;const int maxnode = 55 * 55 * 4;const int maxr = 55 * 55;const int maxc = 55 * 6;int U[maxnode],D[maxnode],L[maxnode],R[maxnode],C[maxn原创 2014-04-16 20:00:53 · 1081 阅读 · 0 评论 -
DLX (重复覆盖+费用不为1的最小费用)fzu Problem 2165 v11
http://acm.fzu.edu.cn/problem.php?pid=2165#include#include using namespace std;const int INF = 0x3f3f3f3f;const int maxnode = 110 * 110;const int maxr = 110;const int maxc = 110;int U[maxno原创 2014-04-18 15:19:56 · 700 阅读 · 0 评论 -
UVA 11987 Almost Union-Find (并查集,可持久化)
大白书:p246 UVA 11987Almost Union-Find加一个id[],不修改,而是insert,然后改idconst int MAXN = 100010 * 2;const int MOD = 1000000; int fa[MAXN], num[MAXN];int sum[MAXN]; int idx[MAXN]; void init(int n){原创 2013-12-04 12:29:44 · 1368 阅读 · 0 评论 -
bnu 33684 Never Wait for Weights (权值并查集)
Bnu33684Never Wait for Weights注意:种类并查集要取模,注意有减法时,+MOD#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #includ原创 2013-12-04 12:24:13 · 1021 阅读 · 0 评论 -
URAL 1713 Key Substrings 后缀数组
URAL 1713 Key Substrings 后缀数组这一类题目,首先模板抄对,熟悉通常问题的解法,把论文里的题目弄懂,一般的题目就可解了多字符串题目,都是连成一个串再处理最好写个debuge_sa()检验模板:比如:void debuge_sa(){ for (int i = 0; i <= n; i++) cout << i << ' ' << r原创 2013-11-26 20:06:43 · 1125 阅读 · 0 评论 -
hdu 3726 Graph and Queries , 天津 2010, LA 5031,并查集,Treap,离线处理
Treap树入门练习题目,此题主要来练习Treap的操作此题也是刘汝佳 大白书,Treap的例题用指针实现的Treap的操作注意:1.不要访问NULL2.cmp函数的使用,相等时返回-1其它,待补充。。。另:为避免错误和是操作的简洁,可使用一个真实的空指针null代替空指针NULL,。。。关于内存预申请的优化写法,待补充//#pragma comment(l原创 2013-11-15 17:17:37 · 1806 阅读 · 0 评论 -
uva 11922 Permutation Transformer 排列变换 Splay 维护序列 翻转操作
参考:大白书 http://blog.youkuaiyun.com/zstu_zlj/article/details/10242605Splay 维护的序列操作,注意lelft不能为null,所以插入一个虚拟节点此处第k大是指序列左数第k个数细节见注释://#pragma comment(linker, "/STACK:1024000000,1024000000")#includ原创 2013-11-25 11:45:34 · 1255 阅读 · 0 评论 -
SPOJ NWERC11C Movie collection 树状数组,线段树
//线段树,用id[]标记,只是insert的点,不更改原来的值,然后将插入的下表记录到id[]中//和 uva 11987 Almost Union-Find类似,不过此题是和并查集相关的//莫非这就是可持续化吗???待研究。。。#include #include #include #include #include #include #include #include #inc原创 2013-10-26 20:01:28 · 936 阅读 · 0 评论 -
最远曼哈顿距离小结 poj 2926 Requirements&hdu 4666 Hyperspace
首先对于两点(x1,y1),(x2,y2)二维的曼哈顿距离为|x1-x2|+|y1-y2|将绝对值去掉,再将同一点的坐标归于一处可得四种情况:1.x1-x2+y1-y2->(x1+y1)-(x2+y2)2.x2-x1+y1-y2->(-x1+y1)-(-x2+y2)3.x1-x2+y2-y1->(x1-y1)-(x2-y2)4.x2-x1+y2-y1->(-x1-y1)-(-x转载 2013-10-21 17:59:51 · 639 阅读 · 0 评论 -
poj3750 大大水题 双向循环链表
此题为练习双端循环链表//#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-11-23 23:08:13 · 1345 阅读 · 0 评论 -
URAL 1752 Tree 2 树上最长路,rmq
对于rmq没有明确的限定边界部分,待解决#pragma comment(linker, "/STACK:102400000000,102400000000")#include #include #include #include #include #include #include #include #include #include #includ原创 2013-10-28 18:15:11 · 1044 阅读 · 0 评论 -
bnu 33967 Boxes in a Line 链表模拟
#include#include#include#include#include#include#include #include #define REP(i, n) for(int i=0; i<n; i++)#define FF(i, a, b) for(int i=a; i<b; i++)#define FD(i, a, b) for(int i=a; i>=b; i-原创 2013-11-07 21:45:16 · 923 阅读 · 0 评论 -
URAL 1992 CVS 链表
不更改链表结构,只是添加信息,没有删除。通过记录和更改下标来模拟题意的插入和删除,复制指针模拟链表:预开指针,存在M[]中,可以提高效率#include#include#include#include#include#include#include#include#include#include#include#include #define REP(i, n)原创 2013-11-21 20:48:41 · 1333 阅读 · 0 评论 -
hdu 4776 Ants (2013 杭州 现场赛) 树上预处理 trie树
2013杭州现场赛 Ants 参考:http://blog.youkuaiyun.com/dslovemz/article/details/15290899http://www.csdn123.com/html/itweb/20131111/216497.htm题意:给一棵边权树,一直蚂蚁从一个节点爬到另一个节点获得的分数是路径上的所有边异或和。m 个询问,求第k大。(u-v和v-u是算两原创 2013-11-12 22:16:17 · 1302 阅读 · 0 评论 -
营业额统计 (Splay树,Treap或set亦可)
参考:http://www.cnblogs.com/kuangbin/archive/2013/04/21/3034081.html#pragma comment(linker, "/STACK:102400000000,102400000000")#include #include #include #include #include #include #include原创 2013-11-27 22:57:15 · 948 阅读 · 0 评论 -
划分树几道题目
主要参考kuangbin博客个人感觉划分树是基于快速排序的分治的思想,是把快速排序每个过程记录下来而已(借助快速排序也是可以快速求整个区间第k值的)对于每个区间,找中间值比较分成两个子区间,再递归处理划分树Hdu4251(区间第k值)typedef long long LL;typedef unsigned long long ULL;typedef vector VI;原创 2013-12-04 14:04:18 · 923 阅读 · 0 评论 -
hdu 4267 A Simple Problem with Integers(分类别维护多个树状数组)
Let A1, A2, ... , AN be N elements. Youneed to deal with two kinds of operations. One type of operation is to add agiven number to a few numbers in a given interval. The other is to query thevalue of原创 2013-12-04 12:38:42 · 947 阅读 · 0 评论 -
1741 Tree (树的分治,点分治)
参考:http://hi.baidu.com/strongoier/item/fe47a4191c18a37c1009b515给出N(1 v长度不超过k的点对(u, v)的个数。点分治法:每次找出分治点,求经过其的路径的点对,子树递归处理即可。会有重复值,需要减去子节点相关的一些值注意技巧:删除点的办法。adj[r ^ 1].mk = false;找出分支点的方法。(与直原创 2013-12-03 18:19:05 · 893 阅读 · 0 评论 -
hdu 4117 GRE Words (ac自动机 线段树 dp)
参考:http://blog.youkuaiyun.com/no__stop/article/details/12287843此题利用了ac自动机fail树的性质,fail指针建立为树,表示父节点是孩子节点的后缀然后更新其影响的字符串的方法,即区间更新,维护最大值,用线段树优化。而其可以影响的字符串为其在fail树中的子树节点此题一直MLE,调了一下午+晚上。最后发现。(1)ac自原创 2013-12-02 22:53:15 · 1361 阅读 · 0 评论