数据结构--RMQ和树状数组
China震震
正在学习acm中,热爱it,大家一起交流学习啊!!!度厂实习生。
展开
-
poj3438 Balanced Lineup(RMQ模板题)
题目链接:http://bailian.openjudge.cn/practice/3438/ 写在前边:刚刚学习了一下RMQ算法,用ST实现的在线查询,写一发水题,人生第一发RMQ纪念一下。 题目思路:裸地RMQ,就是让你求解出在这个区间段内的最大值和最小值,然后输出该区间最大值与最小值之间的差值。 代码: #include using namespace std; const int原创 2017-06-11 12:02:29 · 253 阅读 · 0 评论 -
蒜头君的玩具娃娃
题目链接:https://www.jisuanke.com/course/615/28147/ 题目思路:RMQ模板题 代码: #include using namespace std; int f[200010][20]; int f2[200010][20];//最小值 int lg2(int n)//确定查询时候的分界值 { return log(double(n))/log(原创 2017-08-02 13:37:46 · 951 阅读 · 0 评论 -
计蒜客 排序(离散化+树状数组)
题目链接:https://www.jisuanke.com/course/615/28134 题目大意:给你一个序列,将它排列成升序,最少的交换次数是多少? 题目思路: 一次有效的交换意味着什么呢? 为了使序列有序,一次有效的交换应该是后一个较小的数与他前一个较大的数交换,那么单独一个数字的交换次数,应该是这个数字前面比它大的数字的个数。原创 2017-08-10 20:13:06 · 331 阅读 · 0 评论 -
计蒜客 奇怪的报数游戏(树状数组+二分+思路)
题目: 题目大意:以前是知道序列,然后利用树状数组求解比自己小的数的总数,这里刚好反转。让你求解原来的序列。 题目思路:如果我们知道最后一个人,他前面有 i 个比他小的编号,那么他的编号一定是 i+1。那么我们是不是可以从后往前来确定每个人的编号呢。设某个点的原序列的值为x,那么它必然满足read(x)+m[i]+1(在这里read(x)为在它后边比它小的数,m[i]为前边比它原创 2017-08-10 21:59:06 · 422 阅读 · 0 评论 -
初识树状数组(模板)
树状数组:优雅而简短的数据结构原创 2017-08-10 14:04:40 · 216 阅读 · 0 评论 -
RMQ算法(ST实现在线查询)
概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,l,r)(l,r算法。 2.RMQ算法 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大且查询很频繁时,该算法无法在有效的时间内查询出正解。 在这里介绍一种比较高效的在线算法(ST算法)解决这个问题。所谓在线算原创 2017-06-11 11:07:02 · 282 阅读 · 0 评论