POJ 3368 Frequent values(RMQ 求区间出现最多次数的数字的次数)...
分类:
其他好文 时间:
2014-11-10 21:53:03
阅读次数:
280
///对于每个询问(l,r),分为两个部分,前半部分求与l之前相同的数的个数直到t,后半部分从t开始直接用RMQ求解最大值就行了。
///最后结果为max(前半部分,后半部分)。
# include
# include
# include
# include
using namespace std;
int f[100100];///前i个有多少个相同的数
int dp[100100][2...
分类:
其他好文 时间:
2014-11-07 22:04:12
阅读次数:
278
1 #include 2 #include 3 const int N = 100; 4 int a[N]; 5 int dp[N][33]; 6 inline int min(const int &a, const int &b) 7 { 8 return a < b ? a : b...
分类:
编程语言 时间:
2014-11-07 09:50:04
阅读次数:
162
POJ Balanced Lineup(RMQ_ST)...
分类:
其他好文 时间:
2014-11-03 22:30:54
阅读次数:
251
在线的LCA算法,dfs遍历整棵树,对于每个点出现的时候都插入到数组中,然后查询两个点的lca就是两个点在数组中最后出现位置间的dep值最小的点,就转化为链上的RMQ问题了。#include #include #include #include #include #include #include ...
分类:
其他好文 时间:
2014-10-31 22:04:52
阅读次数:
214
题目链接:点击打开链接
题意:
给定n座山
下面n个数字表示n座山的高度
若这座山u合法,则要满足:
1、若u的左边存在比u高的山,设v是u左边距离u最近的且严格比u高的山,在[v,u]之间至少有一座山x,使得x和u的高度差>=15000
2、右边也同理。
同时满足1、2的情况则算合法。
问:
输出所有合法的山。
思路:
求距离某个点最近的山就是维护一个单调栈,然后给...
分类:
其他好文 时间:
2014-10-30 00:13:47
阅读次数:
204
之前就写的是离线算法。思路就是先序一遍树,记录层数,然后高效RMQ就好。ST和线段树都能过。以后有时间将之前的在线算法补上。#include using namespace std;#define MAXN 100005#define MAXM 105#define inf 0x7ffffffint...
分类:
其他好文 时间:
2014-10-29 01:41:39
阅读次数:
269
题目链接:hdu 4123 Bob’s Race
题目大意:一个城镇有N个住户,N-1条路连接两个住户,保证N个住户联通,M次询问,给定N条边的信息,包括连
接的住户序号以及路的长度。然后是M次询问,每次询问Q,要求找到最长的连续序号,使得Max(dis[i]) - Min(dis[i]) ≤
Q(l≤i≤r),输出最大的r-l+1。dis[i]为从第i个住户出发,不重复走过路...
分类:
其他好文 时间:
2014-10-28 17:58:39
阅读次数:
204
题目链接:hdu 2888 Check Corners
题目大意:给定一个矩阵,每次查询矩阵中的最大值,并且判断该最大值是否在所查询的角落上。
解题思路:一开始用线段树,一维RMQ都超时了,然后换成了二维的RMQ,结果MLE,dp数组换成9?9就过了。
#include
#include
#include
using namespace std;
const int maxn...
分类:
其他好文 时间:
2014-10-27 21:24:04
阅读次数:
235