Codeforces Round #445 div.2 D. Restoration of string 乱搞

Posted 掉血菜鸡煮熟中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #445 div.2 D. Restoration of string 乱搞相关的知识,希望对你有一定的参考价值。

D. Restoration of string

题意:给你n个字符串,让你构造一个终串,使得这n个字符串都是终串的最小频繁子串,如果不存在输出NO。  最频繁子串:出现次数最多的子串

tags: 直接暴力怼??

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 200005;

int n, in[28];
char s[N];
bool vis[28], used[28];
vector< int > G[N];
void print(int x)
{
    putchar(a+x);
    vis[x] = true;
    if(G[x].size()==1)
        print(G[x][0]);
}
bool check(int x)
{
    if(vis[x]) return false;
    vis[x]=true;
    if(G[x].size()==1)
        return check(G[x][0]);
    return true;
}
int main()
{
    scanf("%d", &n);
    rep(i,1,n)
    {
        scanf("%*c%s", s+1);
        mes(vis, false);
        for(int j=1; s[j]; ++j)
        {
            int id = s[j]-a;
            if(vis[id]) return 0*printf("NO\n");
            vis[id]=true, used[id]=true;
            if(j>1) {
                if(G[s[j-1]-a].size()==1 && G[s[j-1]-a][0]==s[j]-a)
                    continue;
                G[s[j-1]-a].PB(s[j]-a);
                ++in[s[j]-a];
            }
            if(G[s[j-1]-a].size()>1 || in[s[j]-a]>1)
                return 0*printf("NO\n");
        }
    }
    mes(vis, false);
    rep(i,0,25)
        if(used[i]) {
            mes(vis, false);
            if(!check(i)) return 0*printf("NO\n");
        }
    mes(vis, false);
    rep(i,0,25)
        if(used[i] && !vis[i] && in[i]==0)
            print(i);
    puts("");

    return 0;
}

以上是关于Codeforces Round #445 div.2 D. Restoration of string 乱搞的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 445B. DZY Loves Chemistry(并查集)

CodeForces - 445B - DZY Loves Chemistry-转化问题

(CF)Codeforces445A DZY Loves Chessboard(纯实现题)

Codeforces 445A. DZY Loves Chessboard

Codeforces Global Round 19

Codeforces Educational Codeforces Round 67