zoukankan      html  css  js  c++  java
  • 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
    ");
                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
    ");
            }
        }
        mes(vis, false);
        rep(i,0,25)
            if(used[i]) {
                mes(vis, false);
                if(!check(i)) return 0*printf("NO
    ");
            }
        mes(vis, false);
        rep(i,0,25)
            if(used[i] && !vis[i] && in[i]==0)
                print(i);
        puts("");
    
        return 0;
    }
  • 相关阅读:
    Unity5和WebGL移植指南的一些总结
    Unite洛杉矶峰会精彩回顾:从图形、平台再到VR
    比代码更重要的是团队管理
    初期游戏编程的9大法则
    关于Unity3D手机网游开发一些小看法
    守住真我
    学习要讲方法
    学习笔记|编程风格
    随便记
    微信方法
  • 原文地址:https://www.cnblogs.com/sbfhy/p/7832604.html
Copyright © 2011-2022 走看看