本文主要是介绍bupt204nbsp;北邮多校J题nbsp;nbsp;后最数组+LC…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题报告
题目 :http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=204
算法 :利用后缀数组求出以每个点为中心的最长回文长度,然后利用二分长度和RMQ搞
思路 :利用后缀数组求出以每个点为中心的最长回文长度,但是偶数和奇数的情况要注意一下,我没想到好方法,只是偶数的维护了一次RMQ,奇数的又维护了一次RMQ。假设求区间[l,r]内的最长回文子串,我们枚举回文串一半的长度mid(奇数原长2×mid + 1)然后判一下在区间[l + mid, r – mid] 内有没有一个以某个点为中心长度大于等于2×mid+1的点,有的话说明这个mid可以被满足,同时我们还要考虑在区间[l + mid, r – mid + 1]中有没有一个长度大于等于2×mid的偶数回文串,这时我们记录最大的长度。由于北邮内存卡的较紧,奇数和偶数是分开处理的。
要注意的是枚举l和r是,奇数情况l从0开始,偶数情况l从1开始。
后缀数组最威武!
提交情况 :MLE,TLE, wa, 3天, AC 一次
AC code:
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
typedef int I64;
typedef unsigned int uI64;
typedef double real;
const double LE =log(2.0);
const uI64 B[32] = {1, 2, 4, 8, 16,32, 64, 128, 256, 512, 1024, 2048,4096, 8192, 16384, 32768, 65536, 131072,262144, 524288, 1048576, 2097152, 4194304, 8388608,16777216, 33554432, 67108864, 134217728, 268435456,536870912, 1073741824, 2147483648};
#define MAX(a, b) ((a) > (b) ?(a) : (b))
#define MIN(a, b) ((a) < (b) ?(a) : (b))
#define mem(a, b) memset(a, b, sizeof(a))
#define fup(i, a, b) for(i = a; i < b; ++i)
#define fdn(i, a, b) for(i = a; i > b; --i)
#define INF 210000000
I64 Gcd(I64 a, I64 b){return b ? Gcd(b, a% b) : a;}
I64 Lcm(I64 a, I64 b){return a / Gcd(a, b)* b; }
#define MAXL 400010
#define MAXCHAR 300
#define MAXJ 20
char str[MAXL];
I64 Rank[MAXL], ST_min[MAXJ][MAXL],ST_max[MAXJ][MAXL / 2], ANS[MAXL / 2],ql[MAXL], qr[MAXL / 2];
I64 L;
bool cmp(I64 *tp, I64 a, I64 b, I64l){
}
void Get_SA(){
}
void Get_height(){
}
void Built_ST_min(){
}
I64 find_ST_min(I64 sux1, I64sux2){
}
void Built_ST_max(I64 cnel){
}
void Built_ST_max1(I64 cnel){
}
I64 find_ST_max(I64 x, I64y){
}
I64 exist(I64 x, I64y, I64 len){
}
I64 slove(I64 x, I64y, I64 cnel){
}
I64 exist2(I64 x, I64y, I64 len){
}
I64 slove2(I64 x, I64y, I64 cnel){
}
int main(){
}
这篇关于bupt204nbsp;北邮多校J题nbsp;nbsp;后最数组+LC…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!