题目链接:
huangjing
思路:新学会的一种算法,RMQ(Rangle Minimum Query)从名字来看,觉得就是查询最小值的,哈哈,
大白上有仔细的讲解。dp[i][j]=min(dp[i][j-1],dp[i+(1
预处理的复杂度为O(N*logN),查询就是O(1)的复杂度。
方法二:线段树解法 复杂度为O(Q*logN).
题目:
题目1 : R...
分类:
编程语言 时间:
2014-11-11 22:52:52
阅读次数:
187
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
//思路就是:数组第i项存储的是前i个(包括第i个)士兵的杀敌数#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){ intnum_of_soldiers,num_of_asks,from,to; inttotal_kills[100001]; inti,num_of_kills; memset(total_kills,0,sizeof(total..
分类:
其他好文 时间:
2014-10-31 19:20:20
阅读次数:
126
题目链接:点击打开链接
题意:
给定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