RMQ算法适合求解对一个数组多次查询给定范围内的最值。 预处理操作: 令d[i,j]表示从i开始,长度为2^j的一段元素的最值,可以用递推公式写出d[i,j] = min{ d[i][j-1], d[ i+2^(j-1) ][j-1] } 原理如图所示: 复杂度:因为2^j<=n, 所以d数组的元素 ...
分类:
编程语言 时间:
2016-07-12 21:00:09
阅读次数:
194
区间的价值 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 844 Accepted Submission(s): 398 Problem De ...
分类:
其他好文 时间:
2016-07-11 14:08:22
阅读次数:
195
【引子】RMQ (Range Minimum/Maximum Query)问题: 对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。 {方法} 1、朴素(即搜索),O(n)-O(qn) onli ...
分类:
编程语言 时间:
2016-07-04 13:25:46
阅读次数:
200
点击打开链接
题意:中文
思路:如果没有多次询问的话,就可以直接用简单的DFS与LCA就可以完成,然而却多加了个变换根的操作,那么怎么办,与刚刚写的那道点这里类似,都是可以变根的,建议先写那道再写这个,思想都是一样的,那么这道题我们也是以1为根先进行LCA与DFS,然后每次的根与询问就是那道题的换根的部分,这不太好说只能自己理解了#include
#include
#include
#i...
分类:
其他好文 时间:
2016-06-28 13:09:39
阅读次数:
184
开发环境中的rabbitmq总是会挂掉,rabbitmq的执行都是ssh远程登录执行命令: 认为加了&,进程会在后台执行不会受到终端的影响。所以不知道什么问题,后面想到使用strace查看该进程到底在退出时遇到了什么。 使用strace记录下日志,到第二天的时候果然RMQ再次倒下。查看日志,看到最后 ...
分类:
其他好文 时间:
2016-06-20 15:37:38
阅读次数:
463
Description 因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大。如果找不到这样的数,则直接输出0。我会采取一些措施强制在线。 因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M ...
分类:
其他好文 时间:
2016-06-17 22:28:37
阅读次数:
197
题意: a[i]表示从第i个车站买一张票可以坐到第[i+1,a[i]]个车站中任一个p[i][j]表示从第i个车站到第j个车站的最少的票数,求∑p[i][j](1<=i<=n,i<j<=n) 思路: 构造dp[i]=∑p[i][j](i<j≤n) 贪心的想,每次从第i个车站买票坐到第m个车站(在[i ...
分类:
其他好文 时间:
2016-06-16 13:17:04
阅读次数:
208
给一个长度为n的数列a,q个询问,每次询问一段区间的mex。(没有出现过的最小非负整数) 1 #include #include #include #include using namespace std; #define SZ 666666 int n,q,a[SZ],ts[SZ],tc[SZ],... ...
分类:
其他好文 时间:
2016-06-10 19:03:30
阅读次数:
189
题意:N个数,M个询问,每个询问为一个区间,求区间最长连续子序列,要求每个数都不同(perfect sequence,简称PS)。 题解:很容易求出以每个数为结尾的ps,也就是求区间的最大值。有一个不同就是长度可能会超出询问范围,所以先对PS的首位置二分,然后RMQ。注意一点,序列有可能出现负数,所 ...
分类:
其他好文 时间:
2016-06-06 01:00:41
阅读次数:
184
南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编号相近的 人经常在一块,相互之间比较熟悉),最终他们获得的军功,也将会平分到每个人身上,这样,有时候,计算他们中的哪一个人到底有多少军功就是一个比较困难的 事情,军师小工的任务就是在南将军询问他 ...
分类:
其他好文 时间:
2016-06-05 17:06:30
阅读次数:
245