AGC026E - Synchronized Subsequence
Posted ivorysi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AGC026E - Synchronized Subsequence相关的知识,希望对你有一定的参考价值。
题解
这个E为啥这么水
不过这个数据范围不用写SA或者SAM直接暴力即可,好评(当然其实写起来也不难。。。)
如果b在a前就一直选,选到某个最大的a的位置会更改成一段a在b前
如果这个a在b前是最后一部分就取到所有的abababab...前,否则就跳过这一段
具体就用string维护一下后缀能取到的max字符串就好了
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <ctime>
#include <map>
#include <set>
#define fi first
#define se second
#define pii pair<int,int>
//#define ivorysi
#define mp make_pair
#define pb push_back
#define enter putchar(‘
‘)
#define space putchar(‘ ‘)
#define MAXN 6005
using namespace std;
typedef long long int64;
typedef double db;
typedef unsigned int u32;
template<class T>
void read(T &res) {
res = 0;T f = 1;char c = getchar();
while(c < ‘0‘ || c > ‘9‘) {
if(c == ‘-‘) f = -1;
c = getchar();
}
while(c >= ‘0‘ && c <= ‘9‘ ) {
res = res * 10 - ‘0‘ + c;
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar(‘-‘);}
if(x >= 10) {
out(x / 10);
}
putchar(‘0‘ + x % 10);
}
namespace task {
char s[MAXN];
int N,a[MAXN],b[MAXN],tota,totb,pos[MAXN];
string str[MAXN];
bool vis[MAXN];
void Init() {
read(N);
scanf("%s",s + 1);
tota = 0;totb = 0;
for(int i = 1 ; i <= 2 * N ; ++i) {
if(s[i] == ‘a‘) {a[++tota] = i;pos[i] = tota;}
else {b[++totb] = i;pos[i] = totb;}
}
}
void Solve() {
str[2 * N + 1] = "";
for(int i = 2 * N ; i >= 1 ; --i) {
str[i] = max(str[i],str[i + 1]);
string t = "";
int p = pos[i];
if(s[i] == ‘a‘ && a[p] < b[p]) {
str[i] = max(str[i],"ab" + str[b[p] + 1]);
}
else if(s[i] == ‘b‘ && b[p] < a[p]) {
memset(vis,0,sizeof(vis));
int maxv = a[p];
for(int j = i ; j <= maxv ; ++j) {
if(s[j] == ‘b‘) {
p = pos[j];
vis[b[p]] = 1;vis[a[p]] = 1;
maxv = max(a[p],maxv);
}
if(vis[j]) t += s[j];
}
t += str[maxv + 1];
str[i] = max(str[i],t);
}
}
cout<<str[1]<<endl;
}
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
task::Init();
task::Solve();
return 0;
}
以上是关于AGC026E - Synchronized Subsequence的主要内容,如果未能解决你的问题,请参考以下文章