![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
_hua_z
这个作者很懒,什么都没留下…
展开
-
线段树(单点更新)
poj 2828 //题意:有n个的排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出。 逆向思维。我们可以这样考虑,最后一个人一定会得到当前队伍他想要的位置,如果我们往前一个阶段,倒数第二个人也一定能得到他想要的位置……,也就是说,我们可以这样处理,我们把最后一个人插入,然后忽略它,再把倒数第二个人插入。即,我们找出当前队伍他想要插入原创 2014-04-16 16:50:02 · 620 阅读 · 0 评论 -
线段树 (区间合并)
poj 3667 题意: 输入 n m:有连续n个空房间,接下来有m个操作 输入 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 输入 2 a b:将[a,a+b-1]的房间清空 思路: 利用线段树建立模型,维护最大连续区间长度, 其中区间长度就是对应的房间数目, 并且对应区间中最左边的端点原创 2014-04-16 16:56:09 · 506 阅读 · 0 评论 -
线段树 (成段更新)
hdu1698 lazy-tag(lazy标记)进行区间修改: 为了减小修改次数,先将要进行的修改存起来,当访问到子节点的时候,如果发现父节点带有标记,就顺便将子节点更新,就像搭顺风车一样。在这道题中,每次可能要将一个区间更改为一个值,比如全集为[1,7],现在要对区间[1,4]进行操作,例如要将[1,4]更改为1,如果采用单点更新,那么就要访问到叶节点一个一个第更新。实际上,当我们从[原创 2014-04-16 16:54:18 · 622 阅读 · 0 评论 -
树状数组
这周重新学了一下树状数组原创 2014-04-12 16:55:18 · 476 阅读 · 0 评论 -
HDU 1251 1671 (简单字典树)
/* 简单字典树 hdu 1251 */ #include #include #include #include #include using namespace std; const int MAX = 26; struct node { int count ;//记录以该节点为前缀的字符串共出现的次数 struct node *next[MAX]; }; str原创 2014-04-28 14:23:27 · 465 阅读 · 0 评论 -
KMP
/* KMP算法 时间复杂度:O(主串长度加上子串长度) 空间复杂度:O(主串长度加上子串长度再加上next数组的长度(与子串长度相同)) */ #include #include #include using namespace std; void gets_next(string T, int len, int *next) { int i = 1; int j =原创 2015-04-14 15:42:14 · 381 阅读 · 0 评论