数据结构习题 (整理中)
2016-05-16 12:56
441 查看
字典树:
hdu 1251 统计出以某个字符串为前缀的单词数量hdu 1800 要求的就是有几个递减的序列,也就是找到最多重复的值。
hdu 1247
离线处理
这个题很蛋疼,不仅不告诉你字符串的长度,而且ac代码对于ab abab 这种情况的结果竟然是ab
hdu 1671
顺序插入即可,插入时判断,是否存在其前缀或者插入的号码是否是其它号码的前缀。
hdu 2846 (*)
对于商品名为abcd的商品,拆为abcd,bcd,cd,d,插入字典树。
在每个结点处,记录该有多少商品名包含该字符串。
(根据字典树查询时的限制,只能从root开始 考虑,所以必须拆商品名)
字典树的题目 开数组时要十分小心,有时候题目给的内存限制,还不够极端情况,这个时候尽量开大,有的时候数组开小了,返回的是wa。
树状数组
hdu 2492 (枚举+扫描)枚举裁判位置,L1[x]*R2[x]+L2[x]*R1[x]即为答案。
维护树状数组从左往右,从右往左扫描两次即可。
hdu 1394 求最小逆序数
先求出初始状态的逆序数
之后维护一个树状数组进行n-1次变换,
每次都可在短时间内更新当前逆序数。(考虑最左数移动到最右边造成的影响)
hdu 2852 KiKi's K-Number (二分+树状数组)
树状数组是升级版的的前缀和sum[],这个题还是利用[x,y]=sum(y)-sum(x-1);
题解
HDU 5372 Segment Game 离散化+树状数组
官方:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度nlog
其实也= 查询右端点小于等于该线段右端点数目-左端点小于该线段数目
这个公式成立必须有一个前提:那就是题目中给出条件的放宽版:添加的线段长度是不递减的。
并查集
并查集删点:就是将已经连上的点孤立,孤立一个点,相当于建立一个新点,原来的点作废,不用真的删除。
hdu2473 Junk-Mail Filter 题解
带权并查集:注意:数可能是负的,一句话的正确与否取决于前面形成的认知,不能否定认知。
HDU 3038 How Many Answers Are Wrong 题解
相关文章推荐
- 理解红黑树
- 数据结构之魔方程序
- C++数据结构-单向列表如何操作
- C 侵入式数据结构
- 数据结构实验之链表三:链表的逆置
- 包含min函数的最小栈
- 数据结构实验之链表二:逆序建立链表
- 数据结构实验之链表一:顺序建立链表
- 跟着郝斌学数据结构(08)——递归
- 数据结构上机测试2-2:单链表操作B
- 共同学习Java源代码--数据结构--ArrayList类(二)
- 跟着郝斌学数据结构(07)——队列(操作及应用)
- 跟着郝斌学数据结构(06)——队列(数组队列基本的一些问题)
- [notes] 可持久化数据结构学习笔记
- 数据结构上机测试2-1:单链表操作A
- 数据结构,二叉树已知后续中序,建树,层次遍历;
- 数据结构-平衡二叉树(AVL Tree)
- 跟着郝斌学数据结构(06)——队列(链式队列)
- 《数据结构》使用数组实现数制的转换
- 《数据结构》10进制的数向任何进制的数进行转换