大意略。
见训练指南P198
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
const int maxn = 100010;
const int maxd = 20;
int n, m;
int d[maxn][maxd];
int a[maxn];
int num[maxn], lef[maxn], rig[maxn];
vector<int> Count;
int RMQ(int L, int R)
{
int k = 0;
while((1<<(k+1)) <= R-L+1) k++;
return max(d[L][k], ......
阅读全文