![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 88
Albafica
研究生
方向:计算机网络
个人描述:完全没入门。SDN门外汉。痛苦的转型期。
展开
-
LA3942 Remember the Word Trie+DP
题目给出了一个原始串,串长不超过300000然后给出了n个单词,问用这个n个单词中的一些单词组成原始串一共有多少种组法,可以重复使用单词。用dp(i)表示从 原始串 i 到 n一共有多少种组发dp(i)=sum(dp(i+len(x)));其中x是原始串s【i。。。n】的前缀。查找前缀可以使用字典树。由于单词长度不超过100,因此每次最多只要比较100个节点即可,每当碰到单词节原创 2014-05-30 16:44:12 · 485 阅读 · 0 评论 -
ZJOI2008 树的统计Count 树链剖分
树链剖分+线段树,水题。1036: [ZJOI2008]树的统计CountTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 3097 Solved: 1282[Submit][Status][Discuss]Description一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将原创 2013-05-30 23:08:55 · 467 阅读 · 0 评论 -
HDU4010 Query on The Trees 动态树
我只能说忽略了细节啊。大家第一次写动态树的时候注意了。由于ACCESS的时候改变一个节点的左右儿子的值,但是但是你左右儿子的父节点的值时不会被修改的!!!!!!!所以rotate这么写的人太注意了,一个else WA了一整天啊啊 if(node[y].f) { if(node[node[y].f].ch[0]==y) node[no原创 2013-06-03 13:17:15 · 1003 阅读 · 0 评论 -
HNOI2010 Bounce 弹飞绵羊 动态树
如果i能弹到j,则将i和j相连i的弹力系数修改后,先断开原来的边,然后与新的边连接即可。统计每一个子树的节点数。输出的时候-1;2002: [Hnoi2010]Bounce 弹飞绵羊Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2567 Solved: 1382[Submit][Status][Discuss]原创 2013-06-04 07:21:04 · 975 阅读 · 0 评论 -
SDOI2011 染色 动态树
动态树,将区间染色,统计区间内颜色的段数。这种区间统计题目,注意下推的时候要连续下推2层,与维修数列相同。2243: [SDOI2011]染色Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1041 Solved: 422[Submit][Status][Discuss]Description原创 2013-06-05 13:51:10 · 1198 阅读 · 0 评论 -
BZOJ2631 tree 动态树
注意用unsigned int ,一开始用long long我的动态树直接被卡出翔。这道题目与AHOI2009的拿到线段树维护延迟标记的方法是一样的,先乘再加 ,这道题目要维护子树的大小(用来加)。操作 + u v c 区间u到v之间的路径都加c* u v c 区间u到v之间的路径都乘c- u1 v1 u2 v2 断开(u1,v1)连上(u2,v2)/ u v 查询原创 2013-06-07 10:03:07 · 1200 阅读 · 0 评论 -
POJ3253 Fence Repair stl+哈夫曼树
用顶小堆计算哈夫曼树的总权。每次取出最小的两个顶点,权值相加,然后加入答案中,然后在讲合并和后的值加入堆中,直到只有一个节点是结束。因为这种方法,一个叶子节点会被重复加他的深度次Fence RepairTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 18840 A原创 2013-06-18 01:32:01 · 1071 阅读 · 1 评论 -
Ural1003 Parity 并查集
这类利用并查集判断条件是否矛盾的问题已经不是第一次碰到了。这次题意是题目给了你一个区间内数字和的奇偶性,让你判断最早第几个条件与前面的条件矛盾,将问题的区间和转化为两个前缀和之差(这类思想经常用到),如果是偶那么两个前缀和奇偶相同,应放在一个集合,如果为奇应该放在不同集合。每次读入一个条件的时候,判断一下违反规则的点是否在一个集合中即可。注意都对的时候输出条件数目。原创 2013-06-06 23:02:09 · 773 阅读 · 0 评论 -
POJ2796 Feel Good 单调栈
题目要我们求出一个区间这个区间的和与这个区间中最小的数的乘积值要最大。对于每一个数字我们求出两个值,分别是lst[i],nxt[i],代表在[lst[i],nxt[i]]区间内a[i]最小。得到这个区间的方法就是单调栈,单调栈中保存数字的位置。按照次序依次入栈,每次入栈的时候与栈顶比较如果小于栈顶则将栈顶元素出栈,并且更新栈顶元素的nxt域(因为当前元素是第一个比栈顶元素小的数字),然后知原创 2013-06-06 01:21:50 · 820 阅读 · 0 评论 -
POJ2777 Count Color 线段树
颜色不多只有30种,用状态压缩每一位代表一种颜色,最后统计区间里面有多少个1就可以了。线段树的成段更新和查询。C A B C 将A B 段染成CP A B 查询 A B段的颜色数量Count ColorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 30425原创 2013-06-05 01:43:16 · 595 阅读 · 0 评论 -
SPOJ375 Query on a tree 树链剖分
NC了,线段树UPDATE忘记PUSH_UP,WA了一个中午,整个人都晕了。这次是边权的操作,那么把边权放在子节点就可以了。375. Query on a treeProblem code: QTREEYou are given a tree (an acyclic undirected connected graph)原创 2013-05-29 13:38:32 · 795 阅读 · 0 评论 -
Ural1553 Caves and Tunnels 树链剖分
首先用树链剖分,将一颗树按轻重链划分成多条链。然后加每一个链从深度由高到底,组成一个有序序列,然后用线段树维护即可。操作。I i d 将节点i增加dG i j 查找i与j之间路径上的最大值。1553. Caves and TunnelsTime limit: 3.0 secondMemory limit: 64 MBAfter landing原创 2013-05-27 12:38:55 · 741 阅读 · 0 评论 -
HDU1542 Atlantis 离散化+线扫描
计算矩形面积的并。首先对x坐标进行离散化,然后在根据y坐标对线段排序,从下往上扫描,碰到下底则在相应区间内增加长度,如果遇到上底,则在相应区间内减去长度。要注意一个区间内可能覆盖的不止一条线段,所以上底-1 下地+1,如果一个区间内col为0时才代表这个区间内已经没有线段了。AtlantisTime Limit: 2000/1000 MS (Java/Others)原创 2013-06-09 01:06:34 · 683 阅读 · 0 评论 -
UVA11732 strcmp() Anyone? Trie
strcmp() Anyone?Time Limit: 2000MSMemory Limit: Unknown64bit IO Format: %lld & %llu[Submit] [Go Back] [Status] DescriptionJstrcmp() Anyone?原创 2014-05-30 21:17:57 · 783 阅读 · 0 评论 -
LA3942 Remember the Word Trie+DP
Remember the WordTime Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu[Submit] [Go Back] [Status] DescriptionNeal is very curious abo原创 2014-05-30 16:43:29 · 143 阅读 · 0 评论 -
ZOJ3765 Lights splay
维护区间的GCD,增加数字。那么毫无疑问是维护区间的神器SPLAY了,至于灯开还是关。。。不用想太多,直接维护两个gcd即可。这道题目基本算是裸的splay了数组开大了,,居然一直TLE,想不通。。。其实基本的splay题目,只要理解了旋转操作,以及获取区间的操作,基本上splay的基本操作就等于掌握了。至于down和up的用处我认为down 是用来成段的维护数列中的数据,用来处理延迟标记原创 2014-04-25 00:49:02 · 697 阅读 · 2 评论 -
ZOJ3279 Ants 树状数组
有1到n 那个点 每一个点有a[i]只蚂蚁两种操作 p a b 把第a个点的蚂蚁数量改成b简单的树状数组+二分就可以了AntsTime Limit: 2 Seconds Memory Limit: 32768 KBecho is a curious and clever girl, and she is addicted to the an原创 2013-07-24 23:26:50 · 498 阅读 · 0 评论 -
SGU507 Treediff SET+启发式合并
对于每一个节点查询,他的所有的叶子节点之差最小的值先对叶子建立set然后向上递归启发式合并,并在合并同时更新值就可以了507. TreediffTime limit per test: 0.5 second(s)Memory limit: 262144 kilobytesinput: standardoutput: standard原创 2013-07-14 12:52:32 · 858 阅读 · 0 评论 -
ZOJ3261 Connections in Galaxy War 并查集
我们倒着来做。删边变成加边。这样就变成裸的并查集维护联通分量Connections in Galaxy WarTime Limit: 3 Seconds Memory Limit: 32768 KBIn order to strengthen the defense ability, many stars in galaxy allied togeth原创 2013-07-13 13:17:53 · 603 阅读 · 0 评论 -
ZOJ2112 Dynamic Rankings 线段树套平衡树
简单树套树区间单点修改区间K值查询线段树套TREAPDynamic RankingsTime Limit: 10 Seconds Memory Limit: 32768 KBThe Company Dynamic Rankings has developed a new kind of computer that is no lon原创 2013-07-12 21:57:36 · 907 阅读 · 0 评论 -
HDU3966 Aragorn's Story 树链剖分
裸地不能在裸的树链剖分了,col忘记清空,狂wa一小时。本来想学LINK CUT TREE的,考试接踵,做题状态全无。== ==暂时顺延了Aragorn's StoryTime Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis原创 2013-05-30 00:36:25 · 1066 阅读 · 0 评论 -
SDOI2008 Cave 洞穴勘测 动态树
裸地lct,只有link cut 和findroot操作。。。。2049: [Sdoi2008]Cave 洞穴勘测Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1122 Solved: 493[Submit][Status][Discuss]Description辉辉热衷于洞穴勘测。某天,他按照地图来到了一原创 2013-06-04 22:53:00 · 788 阅读 · 0 评论 -
SGU271 Book Pile SPLAY
两种操作,在书堆上面再放一本书。将书堆最上面k本书,反转。因为反转位置和数量固定,其实可以用双端模拟,,,,但为了复习一下SPLAY还是麻烦一点的比较好,,,。。。。271. Book Piletime limit per test: 0.5 sec.memory limit per test: 65536 KBinput: standardoutp原创 2013-05-29 01:12:01 · 661 阅读 · 0 评论 -
ZOJ2334 Monkey King 左偏树+并查集
有一n个猴子,每个猴子有一个战斗力,如果x和y不认识那么x会找他认识的猴子中战斗力最高的猴子与y认识的猴子中战斗力最高的猴子打一架,然后两只打架的猴子战斗力减半,然后x认得所有猴子就和y认识的所有猴子认识了,下次就不打架了。。。。。然后要我们输出打完架之后,在这个新的团体中战斗力最高的猴子的战斗力。要快速查找最大值,然后要合并两个堆,那就选用左偏树。因为我用了pop操作,发现,内存原创 2013-05-23 14:09:01 · 827 阅读 · 0 评论 -
POJ3928 Ping pong 树状数组
题目中只n个人,每个人有一个ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判的ID和技能值都在两个选手之间的时候才能进行一场比赛,现在问一共能组织多少场比赛。这道题目是简单的树状数组统计问题。首先我们要对技能值从小到大排序,然后利用每一个选手的ID对树状数组进行维护.每次维护一个ID之前先查询sum(ID) 与sum(n)-sum(ID)打个比方,我们当前维护ID :i 那原创 2013-05-22 13:02:59 · 804 阅读 · 0 评论 -
HDU1890 Robotic Sort SPLAY
这道题目需要伸展树的区间翻转操作,另外这道题我完成了我的SPLAY的删除节点的操作,由于伸展树的操作特点,删除某个节点的步骤是将该节点旋转到root然后再删除,也就是啊说,我们只要写个删除根节点的函数即可。另外注意push_down的位置。感想:伸展树真的很漂亮,这些操作都很神奇 解法:题目意思是我们要将所有试管从低到高排序,刚开始试管是无序的。因此需要一个机械手臂从低到高抓取原创 2013-04-22 13:11:24 · 949 阅读 · 2 评论 -
POJ1598 Excuses, Excuses! TRIE树
其实这道题目完全可以不用trie,但权当熟悉trie了,练下手。题目给出k个关键词 (全部小写)然后给出e个句子让你找出关词出现次数最多的句子(句子中单词可能大写,句子所含关键词数量可能相同)。注意不要使用stringstream直接分割句子,因为可能有两个单词之间使用标点符号连接的,这里只能手动敲代码了,其实也不多。注意输出答案后要多输出一个空行。 Lan原创 2013-03-19 23:21:14 · 751 阅读 · 0 评论 -
HDU4006 The kth great number 线段树
一开始犹豫了,以为有负数。但试着用了线段树,AC了,那么应该是没有负数的。线段树每个节点保存当前编号的数出现的次数。每次查询从小到大第N-K+1个数(N为当前数的总数)。The kth great numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Tota原创 2012-09-06 23:46:00 · 749 阅读 · 0 评论 -
POJ2182 Lost Cows 线段树
和buy tickets一样的思路,从后往前插。具体思路不写了Lost CowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7487 Accepted: 4779DescriptionN (2 <= N原创 2012-09-05 15:12:06 · 788 阅读 · 0 评论 -
POJ2886 Who Gets the Most Candies? 线段树+约瑟夫+反素数
线段树+约瑟夫+反素数。用线段数跟新队伍中的人数。每次查询将要出队的人在当前队伍中的位置。在通过将要移动的位置,找出下一个位置。通过这一题知道了反素数。。。。ORZ 膜拜众神犇Who Gets the Most Candies?Time Limit: 5000MS Memory Limit: 131072KTota原创 2012-08-04 08:09:04 · 698 阅读 · 0 评论 -
HDU4262 Juggler 线段树
warm up的第六题,当时就看出来是线段树了,只是因为一些细节问题,没有A掉,做题目的时候心浮气躁。看来要走的路还很长。这题目有三种动作让我们选择 1:顺时针移动一格 2:逆时针移动一格 3:把第一个球丢掉。问我们最少多少个动作把球从小到大丢掉。这题的数据量很大,我想到了查询从当前要丢掉的球的位置顺时针到第一个球和逆时针到第一个球所在的位置上还剩余多少个球,来求出最少的动作。(这里的第一原创 2012-08-26 23:20:10 · 568 阅读 · 0 评论 -
HDU4217 Data Structure? 线段树
记得是上学期的一场比赛的题目。线段树的单点更新,查询的同时更新节点即可。注意数据范围使用 long longData Structure?Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1721 Accepted Submiss原创 2012-08-27 10:32:47 · 767 阅读 · 1 评论 -
POJ2823 Sliding Window 单调队列
有关单调队列的实现详见这个博客,写的不错http://xuyemin520.is-programmer.com/posts/25964Sliding WindowTime Limit: 12000MS Memory Limit: 65536KTotal Submissions: 26980 Accepted: 8031Case Tim原创 2012-08-27 14:46:37 · 504 阅读 · 0 评论 -
POJ2155 Matrix 树状数组
二维的树状数组,解题思想详见《浅谈信息学竞赛中的“0”和“1”》这篇论文,我上传了一份http://download.csdn.net/detail/lenleaves/4548401。很经典的题目,很经典的思想。MatrixTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 128原创 2012-09-04 21:50:32 · 1229 阅读 · 0 评论 -
NOI2004 郁闷的出纳员 SPLAY
郁闷的出纳员。我比他还郁闷,谢了将近两天,终于把第一到SPLAY写完了,之前一直用的treap但觉得splay的功能强大,有必要学一下。当然,当treap足够解决的时候还是用treap比较好,毕竟代码量要少点,不容易出错。splay能够很好的对区间进行处理。刚开始各种纠结,打算一个一个的删除,但由于判断加进了push_down 函数,程序直接爆掉,后来发现根本不能这么操作,因为这样会让程序原创 2013-04-14 07:48:02 · 1629 阅读 · 2 评论 -
HDU3487 Play with Chain SPLAY 区间分裂,区间合并,区间翻转
这道题目涉及了伸展树的分裂特点。这里注意,当我们要对伸展树做区间分裂操作的时候,我们要添加开始于结尾两个点,用于防范边界情况。输出时特殊判断即可。具体做法是在build建树之前先手动给root一个值0然后给root的右儿子一个值n+1,这样我们就形成了一个区间【0,n+1】,然后我们在将要建立的1-n这棵树放在root的右儿子的左子树上。这里一定要理解。因为以后我们对伸展树的区间操作都是这种方原创 2013-04-24 00:09:46 · 1230 阅读 · 0 评论 -
HNOI 营业额统计 SPLAY
裸地平衡树,应该可以用各种平衡树。就是插入一个节点之后求其前驱和后继,然后做差取绝对值最小的加到答案上。第一个节点直接加在答案上。数据似乎有问题,要在输入的时候特殊处理,。。。我直接看了DISCUSS。。。。1588: [HNOI2002]营业额统计Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 4504 Solved:原创 2013-04-25 00:25:21 · 538 阅读 · 0 评论 -
LA3135 Argus 优先队列
ArgusTime Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu[Submit] [Go Back] [Status] DescriptionA data stream is a real-time, contin原创 2013-05-21 16:05:36 · 588 阅读 · 0 评论 -
UVA11997 K Smallest Sums 多路归并(优先队列)
//多路归并问题//把k个有序表合并成一个有序表。//大于2是两两归并//本题只要求出k个最小的,所以可以限制上限//k个整数数组,每个数组包含k个数,在每个数组中//去一个数加起来,得到K^K个和//求这些和中的最小的k个值K Smallest SumsYou're given k arrays, each array has k integers原创 2013-05-21 22:29:39 · 983 阅读 · 0 评论 -
LA3027 Corporative Network 并查集(维护节点到root的距离)
Corporative NetworkTime Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu[Submit] [Go Back] [Status] DescriptionA very big corporation原创 2013-05-22 01:38:12 · 777 阅读 · 1 评论