数据结构
mosquito_zm
这个作者很懒,什么都没留下…
展开
-
hdu5869——Different GCD Subarray Query(思考+树状数组)
这是我第二次做这道题了,还是没做出来,真是惭愧。。题意:长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种.题解:考虑固定左端点的不同GCD值,只有不超过logA种, 所以事件点只有nlogA个. 那么离线处理, 按照区间右端点排序从小到大处理询问, 用一个树状数组维护每个GCD值的最大左端点位置即可. 复杂度是O(nlogAlogn).原创 2016-09-10 20:08:23 · 327 阅读 · 0 评论 -
ACM竞赛中数据结构题目心得:分块【With HDU4366】
我在ACM竞赛中,一般负责决定队伍的下限:水题能不能清理出来……其他太高深的题目,我表示我还是挺无脑的,一般都不老会的……只有数据结构类题还是挺得心应手的……而个人心得体会最深刻的还是无脑的方法:个人称为根号N法……主要思想就是将待操作的长度为N的区间分成大小为sqrt(N)的块,然后实现各种操作……一些常用定义:MAGIC:定义一个块的大小,如字面意思,一个莫名其妙的数字……于是,我们把一段长度...转载 2018-04-13 18:45:00 · 244 阅读 · 0 评论 -
线段树详解 (原理,实现与应用)
线段树详解By 岩之痕目录:一:综述二:原理三:递归实现四:非递归原理五:非递归实现六:线段树解题模型七:扫描线八:可持久化 (主席树)九:练习题一:综述假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改转载 2017-08-04 09:30:21 · 290 阅读 · 0 评论 -
LCA实现的三种不同的方法
LCA,最近公共祖先,实现有多种不同的方法,在树上的问题中有着广泛的应用,比如说树上的最短路之类。LCA的实现方法有很多,比如RMQ、树链剖分等。今天来讲其中实现较为简单的三种算法:RMQ+时间戳、树上倍增(类似二分步长)、Tarjan算法(DFS+并查集)。【RMQ+时间戳】什么是时间戳?时间戳,就是被访问到的一个次序。比如说我们首先对一棵树进行深搜,在深搜中访问的相应次序就转载 2017-08-04 09:09:16 · 471 阅读 · 0 评论 -
树状数组求逆序对(要离散化)
给定n个数,要求这些数构成的逆序对的个数。除了用归并排序来求逆序对个数,还可以使用树状数组来求解。树状数组求解的思路:开一个能大小为这些数的最大值的树状数组,并全部置0。从头到尾读入这些数,每读入一个数就更新树状数组,查看它前面比它小的已出现过的有多少个数sum,然后用当前位置减去该sum,就可以得到当前数导致的逆序对数了。把所有的加起来就是总的逆序对数。题目中的数都是独一无二的,这些数最转载 2017-04-02 14:15:43 · 398 阅读 · 0 评论 -
莫对算法
清橙A1206 小Z的袜子(莫队算法)然后这个算法是用来处理一类无修改的离线区间询问问题。转载 2017-02-18 16:03:33 · 591 阅读 · 0 评论 -
莫队讲解
因为学校的小朋友不知道莫队是什么……所以就写了这个普及向……没有什么东西……会的话就不用看了……因为是在学校用记事本写的……所以求和符号没有用latex……手画2333对于一些特殊的数据结构题……比如询问序列中区间[l,r]的什么东西,如果我们已经知道了[l,r]的答案,那么就能在O(1)或O(lgn)的时间得到[l,r+1]或[l-1,r]的答案而且允许离转载 2017-02-18 16:22:19 · 308 阅读 · 0 评论 -
scu oj 4441 Necklace(dp+树状数组)(*)
题目链接Necklacefrog has n gems arranged in a cycle, whose beautifulness are a1,a2,…,an. She would like to remove some gems to make them into a beautiful necklace without changing their relative转载 2017-08-01 09:44:26 · 277 阅读 · 0 评论 -
树状数组求区间最大值
这个算法只支持单点修改和区间查询最值。每一次维护和查询的时间复杂度都是O((logn)^2),但这是满打满算的时间复杂度。假设是要维护和查询区间的最大值(最小值将max改成min 就好了)这个算法和树状数组维护和查询区间和的方法很相似: 一、数组的含义1、在维护和查询区间和的算法中,h[x]中储存的是[x,x-lowbit(x)+1]中每个数的和, 2、在求区间最值的算转载 2017-07-31 11:02:46 · 1452 阅读 · 0 评论 -
hdu5869——Different GCD Subarray Query(思考+树状数组)
这是我第二次做这道题了,还是没做出来,真是惭愧。。题意:长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种.题解:考虑固定左端点的不同GCD值,只有不超过logA种, 所以事件点只有nlogA个. 那么离线处理, 按照区间右端点排序从小到大处理询问, 用一个树状数组维护每个GCD值的最大左端点位置即可. 复杂度是O(nlogAlogn).转载 2016-09-10 20:11:45 · 235 阅读 · 0 评论 -
C++ STL中的哈希表 hash_map
0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就是取得所有的记录,然...转载 2018-04-24 21:43:53 · 342 阅读 · 0 评论