------数据结构
_zhj
加油!
展开
-
线段树模板
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O原创 2017-07-30 16:49:14 · 207 阅读 · 0 评论 -
poj3264 Balanced Lineup——线段树
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 54929 Accepted: 25726 Case Time Limit: 2000MS Description For the daily milking, Far原创 2017-08-01 20:12:51 · 245 阅读 · 0 评论 -
RMQ算法
1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。 2.RMQ算法 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量转载 2017-08-02 16:09:16 · 171 阅读 · 0 评论 -
树状数组
树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。——百度百科 树状数组作用就是给定一个数组,在lo...原创 2017-08-03 19:13:27 · 293 阅读 · 0 评论 -
HDU 5057 Argestes and Sequence 树状数组+离线
Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1466 Accepted Submission(s): 445 Problem Description Arges原创 2017-08-21 11:32:38 · 288 阅读 · 0 评论 -
Merkle Tree学习
转载自:http://www.cnblogs.com/fengzhiwu/p/5524324.html Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1] 1.转载 2017-10-08 10:57:33 · 377 阅读 · 0 评论 -
求逆序数(归并排序和树状数组)
题目: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 归并排序法 在归并过程中,两部分记为左数组和右数组,如果右数组当前的数小于左数组当前的数,那么逆序对总数加左数组剩余元素个数。时间复杂度为O(nlogn)。 代码: #incl...原创 2019-04-08 22:15:06 · 269 阅读 · 0 评论