算法
ybacm
这个作者很懒,什么都没留下…
展开
-
线段树的入门-Poj2528(简单线段树和简单离散化)
此题目的线段树就是一般的线段树思路,但是我们会发现他的范围实在是太大,怎么办? - 离散化! 离散化的目的就是为了压缩空间,这个题目的离散化也是比较简单的: 例如样例有5个区间[1,4],[2,6],[8,10],[3,4],[7,10] 然后我们将这十个端点拿出来,分别是1 4 2 6 8 10 3 4 7 10 将这十个端点排序,删掉重复的点,即1 2 3原创 2017-11-18 09:01:46 · 938 阅读 · 1 评论 -
HDU1540--线段树(最长连续区间)
这个题目好像不是很难,可是我想了很久,还超时了。。我用的是普通线段树和二分,第一次用二分超时啊啊啊啊啊 好,让我们言归正传。(参考别的大佬的做法,贼6) 看到这个题目之后,能够想到它是为了求包含一个点的最大连续区间。那么多的区间,应该是要用线段树来做。 可以想得到,查询的时候,是从这个点展开,判断左右是否连续。 首先,我们用递归查询到这个点,或者说是包含这个点的连续区间,假设它是一个左子树转载 2017-11-27 21:47:36 · 1116 阅读 · 0 评论 -
KMP求重复字符串——HDU1358
这个题目蛮有意思的,大家都说用到了什么KMP的灵魂--next[]数组的应用,可是也没见哪个人给我来个很正式的数学推导。。 到最后也只是看到了一个博客上写的是由观察得来的结论--http://blog.csdn.net/lizhihaoweiwei/article/details/76977431 其实也就是一个规律性的东西,就是你利用next数组以及长度为i的前缀可以得出一个满足重复的条件:原创 2017-12-28 19:52:59 · 395 阅读 · 0 评论 -
简单又复杂的算法--分块
对于区间操作的问题,部分可以用分块来做 事实上分块还是蛮简单的,主要是看分块之后怎么样进行处理,它很灵活,没有固定的模式 还是拿题目来举例吧 Bzoj 2002 Bzoj 3065 Bzoj 2002 分块版 #include"cstdio" #include"cmath" #define Maxn 200005 int st[Maxn],pt[Maxn],belong[Max原创 2018-01-14 10:48:13 · 4192 阅读 · 0 评论