2018 Nowcoder Multi-University Training Contest 10
Posted dup4
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018 Nowcoder Multi-University Training Contest 10相关的知识,希望对你有一定的参考价值。
J. Rikka with Nickname
题意:
给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\(s\)是\(r\)的前缀,并且\(t\)是\(r\)的一个子序列。
思路:
动态维护序列自动机,贪心插入即可。
代码:
#include <bits/stdc++.h>
using namespace std;
#define N 1000010
char s[N], res[N];
int nx[N][26];
int n, m, len;
void add(int now)
for (int i = now; i <= len; ++i)
res[++m] = s[i];
for (int j = m - 1; j >= 0; --j)
nx[j][res[m] - 'a'] = m;
if (res[j] == s[i])
break;
int main()
int T; scanf("%d", &T);
while (T--)
m = 0;
memset(nx, -1, sizeof nx);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%s", s + 1);
len = strlen(s + 1);
if (i == 1)
add(1);
else
int now = 0;
for (int j = 1; j <= len; ++j)
now = nx[now][s[j] - 'a'];
if (now == -1)
add(j);
break;
res[m + 1] = 0;
printf("%s\n", res + 1);
return 0;
以上是关于2018 Nowcoder Multi-University Training Contest 10的主要内容,如果未能解决你的问题,请参考以下文章
2018 Nowcoder Multi-University Training Contest 5
2018 Nowcoder Multi-University Training Contest 1
2018年全国多校算法寒假训练营练习比赛(第四场)nowcoder
牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第三场)A.不凡的夫夫(斯特林公式) D.小牛vs小客 E.进击吧!阶乘(大数Java) G.大水题(数学)
牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第五场)A.逆序数 B.Big Water Problem(线段树-区间查询求和和单点更新) F.The Biggest Water
牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集(dfs) B.道路建设(最小生成树prim) C.求交集(暴力) F.Call to your teacher