
数据结构
silentsaber~
晨意微寒秋渐深,侧畔无事俏佳人
展开
-
感人至深,splay的代码量
A Simple Problem with Integers线段树大法好 splay码量太长了。但是为了早日掌握splay,还是作死的写了一下http://poj.org/problem?id=3468就是线段树区间操作,lazy标记。只不过用splay实现。写完之后发现,以前认为线段树代码量长,现在~~~~~~~--------------------------原创 2015-12-11 09:57:00 · 564 阅读 · 0 评论 -
扫描线入门
听说扫描线很牛掰,于是就见识了一下。之前做过一道扫描线的题,brother,就是判断矩形是否被矩形内部的车攻击到。当时是把矩形拆成出边和入边(竖直的),把所有小于x2的车加进图中,扫[y1,y2]中x最小的车的x.和x1判断比较。然后交换x,y扫一遍当时只是感觉线段树很神奇,还可以这样搞,后来才知道这种按x2的排序遍历就相当于扫描线。然后就做了扫描线的入门题。原创 2016-02-25 09:11:42 · 538 阅读 · 1 评论 -
POJ1389[Area of Simple Polygons]
Area of Simple PolygonsTime Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64uSubmit StatusDescriptionThere are N, 1 <= N <= 1,000 rectangles原创 2016-02-25 09:39:57 · 329 阅读 · 0 评论 -
bzoj2049[洞穴勘测]纯粹的LCT
http://www.lydsy.com/JudgeOnline/problem.php?id=2049就像lct=link-cut-tree一样,这道题是纯粹的LCT.为什么呢,它的操作一共就只有link,cut.(query是查询)可以说是非常的裸,但是对于我这个刚学的菜鸟还是有一个地方比较纠结首先初始化所有的点,是他们各自是一棵树。然后一旦两个点两边就link两个森林原创 2016-03-10 10:49:13 · 741 阅读 · 0 评论 -
POJ1151 亚特兰蒂斯
AtlantisTime Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64uSubmit StatusDescriptionThere are several ancient Greek texts that contain desc原创 2016-02-25 10:22:23 · 413 阅读 · 0 评论 -
HDU3255[farm] (扫描线方体体积并)
终于调出来了,恶心死我了- -http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19080刚恶补扫描线,做了几道入门题,然后继续找题,网上推荐了这道题,就打算来做一下。恩,题意还是比较简单,求矩形的面积*权值,重叠部分*最大权值。卧槽,好像挺简单,恩,不对呀,怎么找到最大,于是考虑暴力枚举- -挂了~~~~原创 2016-02-25 16:30:38 · 478 阅读 · 0 评论 -
hdu1828[扫描线矩形周长并]
PictureTime Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64uSubmit StatusDescriptionA number of rectangular posters, photographs and other pic原创 2016-02-25 19:22:20 · 447 阅读 · 0 评论 -
数据结构数据生成器--生成树 bzoj1036
今天写了一道数据结构的经典题---树的统计,尝试用LCT写,结果不造怎的可以过样例,但交上去就WA,苦于肉眼找不出错,于是翻出了以前写的树立剖分的版本,想来搞搞对拍。然而~~~~~尼玛树怎么构造啊- -然后沉思- -,网上搜索,找不到- - -- - - - -- - - - 然后想起来了purfer编码,咦,purfer编码不就是搞树的么。还记得purfer编码是原创 2016-03-11 09:43:39 · 1983 阅读 · 0 评论 -
LCT解法解决数据结构神薙bzoj1036
确实是神(mo ban)薙(ti)好多数据结构都靠这个入门- -用LCT解这道题也很简单。维护val,maxval,sum.CHANGE的时候把这个点旋到当前splay的根,然后进行操作QMAX,先把u设为整棵树的根,再把v旋到当前splay的根,然后找到当前树(u-v这条路径)的根,读取信息QSUM,和上面一样,读取SUM.然后就是模板了:#include原创 2016-03-11 09:50:26 · 388 阅读 · 0 评论 -
SPOJ-LIS2[又遇CDQ]
SPOJ - LIS2Another Longest Increasing Subsequence ProblemTime Limit: 345MS Memory Limit: 1572864KB 64bit IO Format: %lld & %lluSubmit StatusDescriptionGiven原创 2016-02-26 15:52:53 · 542 阅读 · 0 评论 -
URAL 1553【CAVE and TUNNEL】
给一些点初始为0,每次增加一个点的权值,或者访问两点之间权值的最大值.裸的LCT,套一下模板:#include#include#include#include#include#include#includeusing namespace std;const int maxn=100000+20;struct node{ node *f; node *ch[2原创 2016-03-11 15:39:03 · 429 阅读 · 0 评论 -
bzoj1503 splay
运用一个整体变量处理全局修改,在减工资的时候处理删除。反正我是不会的,理解了别人的代码(改成了指针):int del(node *&u,node *f){ if(u==null)return 0; int k;//删除人数 if(u->key+lazy<m) { k=del(u->ch[1],u)+u->ch[0]->sz+1; u->ch[1]->sz=u->sz-k原创 2016-03-24 11:15:06 · 348 阅读 · 0 评论 -
HDU3436[离散化splay]
一开始拿到题,恩,还行吧,就是splay模拟一下。看了一下数据,卧槽,n这么大,不过好在q比较小,所以需要离散化。线段树的离散化是把数字排序去重,每个数字对应在数组中的位置。splay的离散化要是这么写估计得挂。 splay的离散化:将要操作的点加到数组中排序、去重,按顺序,每个点加入,并且相连两个点之间的区间算作一个点加入。也就是,spla原创 2016-02-29 17:23:10 · 338 阅读 · 0 评论 -
[补充]LCT有关细节的处理及理解
由于初学,对LCT各种操作还不是很会原创 2016-03-10 08:31:59 · 571 阅读 · 0 评论 -
LCT的初步理解
一种动态树,可以处理动态问题的算法。这是我个人的观点~~有大神也是这么说的,像其他算法比如树链剖分,只能处理静态的数据或者在轻重链上的边或点的权值,对于其他动态的处理就毫无办法了。而用裸的暴力绝对是要T的。怎么办,引入LCT~~~~LCT用来维护动态的森林,以及一些链上操作。说实话初次接触LCT的时候,由于是0基础,然后左看右看不懂网上的题解原创 2016-03-09 15:53:15 · 5009 阅读 · 0 评论 -
LCT
http://blog.youkuaiyun.com/d891320478/article/details/9181385转载 2016-03-09 15:15:42 · 417 阅读 · 0 评论 -
小练习,splay区间反转
一道codevs的区间翻转问题。http://codevs.cn/problem/1743/题意,每次找最左边的数,令为k: k=1,结束; 否则,ans++,翻转[1,k].(给定的是全排列,所以,加两个点就可以直接做了。)题目中说可能无解,但我觉得应该有解,所以就没管-1. 求大神指导一下到底是否一定有解。(当然最好定义一个较大的操作数,大于此操作数仍无法原创 2015-12-11 09:40:21 · 1387 阅读 · 0 评论 -
AC自动机入门
学了AC自动机,自己把理解做成了ppt接下来把思路粘过来好了:•首先,对于模式串和文本串的匹配,我们是用的kmp算法。•Kmp在传统O(mn)算法上优化至O(m+n).•但是一个串要和多个串匹配呢?•N个kmp?••超时TLE••我们引入AC自动机•需要知识:kmp匹配原理,字典树知识。•复习:kmp•Kmp思想大原创 2015-12-12 14:36:40 · 362 阅读 · 0 评论 -
主席树初步
主席树是一个很神奇的东西,效率次于划分树。关于思路,还是用图片来展示吧:附上poj2104代码:#include#include#include#include#include#include#include#define M 100000+5using namespace std;/*以poj2104求[l,r]第k大的数为例探究主席树 */struc原创 2015-11-27 19:29:39 · 667 阅读 · 0 评论 -
树链剖分简单入门
树链剖分,可以算是一种思想吧,因为它一般会和其它数据结构套在一起用。之前自己在理解的时候写了个ppt,以便以后能够再忘了的时候看看。•树链剖分入门•• ---------By nikelong•遇到这样一道题:给定一棵树,每条边又一个权值,询问任意两点u,v之间路径上的权值和和极值。原创 2015-12-19 09:39:00 · 452 阅读 · 0 评论 -
splay的入门
splay玄学,神奇,多变,应用广。均摊时间复杂度O(n log n) (不会证明,好像都是这么说“可以证明”的,单次最坏情况是O(n),但是平均下来是n log n).思路很简单,基于rotate操作,和splay把某个点旋到那个节点之下。几乎所有的操作都需要splay.花了好长时间研究怎么写更简便,之后总结出了属于自己的参考模板。(功能不全,基于bzoj1588的)原创 2015-12-04 15:00:05 · 879 阅读 · 0 评论 -
splay区间翻转及删除区间,平移区间
研究了很长时间,花费了一个下午debug,终于调出来了hdu 3487 play with chainhttp://acm.hdu.edu.cn/showproblem.php?pid=3487两个操作(指针实现)cut l,r, c把[l,r]剪下来放到剩下序列中第c个后面的位置.flip l r 把[l,r]翻转(lazy标记,每次交换左右节点)原创 2015-12-06 17:27:04 · 3418 阅读 · 0 评论 -
三维偏序 CDQ
来看这样一道题()描述:给出 n 个点(x,y,z),请找出最长上升子序列,即对于选择序列中的 ixi输出最长上升子序列的长度和方案数。输入:第一行包含一个整数 n接下来 n 行,每行有 3 个整数 xi,yi,zi输出:输出长度和方案数(方案数对2^30取mod)输入输出样例:cdq.in cdq.out32 0 00 1 10 1原创 2016-02-21 10:52:34 · 6714 阅读 · 4 评论 -
动态逆序对[CDQ]
CDQ二层试炼:bzoj3295http://www.lydsy.com/JudgeOnline/problem.php?id=3295题意大致是:给你一个序列(一个1~n的排列),每次删掉一个数,求删掉之前的逆序对。方案1:强行模拟,每次删掉一个一个数,在剩下的数里面用归并求逆序对,复杂度O(mnlogn)这个复杂度明显是不能接受的方案2:原创 2016-02-21 20:05:45 · 826 阅读 · 0 评论 -
梯形剖分入门(特殊情况)【ice】
传说把一个多边形按照顺时针(或者逆时针)旋转,相邻两个点分别作x轴的垂线(并且这两个点相连),就构成了梯形,然后定义从点在x轴方向上左到右为正(或者为负),得到n个梯形,把面积加起来就构成了多边形面积,这种剖分就是梯形剖分.这种梯形剖分就把难以处理的多边形就面积转为求梯形面积(带有正负).而最简单的情况是给你一些梯形求面积(相交也要重复计算),而且是特殊的直角梯形,例如下面原创 2016-02-22 17:03:47 · 1268 阅读 · 0 评论 -
平面最近点对【kd树初探】
Description 给出n个点,每个点坐标为(xi,yi)。 定义距离为D(A,B)=|xA-xB|+|yA-yB| 求每个点到离它最近的点的距离Input 第一行为一个整数N 接下来N行每行两个整数xi,yi,表示第i个点的坐标Output 输出N行,每一行为第i个点的最近距离Sample Inp原创 2016-02-22 19:40:13 · 1315 阅读 · 0 评论 -
brother[扫描线]
描述:胜负胸中料已明,又从堂上出奇兵。秋实大哥是一个下棋好手,独孤求败的他觉得下棋已经无法满足他了,他开始研究一种新的玩法。在一个 n×m 的棋盘上,放置了 k 个车,并且他在棋盘上标出了 q 个矩形,表示矩形内部是战略要地。秋实大哥要求一个矩形内的每一个格子,都至少能被一辆在矩形内的车攻击到,那么这个矩形就是被完整保护的。现在秋实大哥想知道每一个矩形是否被完整保护。原创 2016-02-22 21:17:45 · 358 阅读 · 0 评论 -
bzoj1012[最大数]
http://www.lydsy.com/JudgeOnline/problem.php?id=1012我是蒟蒻!~~~~~~~~~~~~~~~~~~不知道什么为毛可以搞成单调栈- - -蒟蒻的我直接写了线段树,维护一个当前序列长度cnt,然后每次查询(cnt-n+1,cnt)的最大值加入一个cnt++#include#include#inclu原创 2016-03-08 08:49:42 · 319 阅读 · 0 评论 -
POJ3580[memo] 旋转吧,splay!
重新写了一下splay,并且琢磨自己的版。以前看过这道题,感觉操作好繁琐,不做。今天看了一下,恩,有必要再写一下splay,先拿这道题练手。题意:给定序列,维护6个操作:ADD l r x 把[l,r]加上xREVERSE l r 把[l,r]翻转REVOLVE l r t 把[l,r]这一段向后滚动t次, 比如1,2,3 滚动2次变成 2,3,1原创 2016-03-01 09:55:27 · 373 阅读 · 0 评论