Hdu-3183(RMQ)

Hdu-3183

 

思路:
去掉m个数字,求得的最大值,就是从原区间内寻找n-m个最小值,

现在区间[1,len-n+1]内寻找最小值在pos位置,然后更新,在[pos,len-n+2]范围内寻找新的最小值的位置。

参考文章

 

#include
#include
#include
#include
using namespace std;
const int maxn = 1200;
char s1[maxn],s2[maxn];
int dp[maxn][30];
int MIN(int x,int y){
	if(s1[x]<=s1[y]) return x;
	return y;
}
int query(int l,int r){
	int k = log2(r-l+1);
	return MIN(dp[l][k],dp[r-(1<=0;i--){
			pos = query(pos,len-i);
			s2[j++] = s1[pos++];
		}
		for(i=0;i=j){
			printf("0\n");continue;
		}
		for(;i

 

你可能感兴趣的:(Hdu,RMQ(ST算法))