zoukankan      html  css  js  c++  java
  • HDU 4850

    http://acm.hdu.edu.cn/showproblem.php?pid=4850

    西安邀请赛当时没做出来的银牌门坎题

    题意:构造一个长度n的字符串,长度>=4的子串只能出现一次

    题解:暴力枚举构造,复杂度是O(最长字符串长度*26),注意到最长字符串长度是26^4+3,因为长度为4的字符串共有26^4种,每种占一个起点,最后加3。注意暴力构造时aaaa,bbbb这种不会被构造出来,要提前加上

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std ;
    
    int ans[500005] ;
    int vis[26][26][26][26] ;
    
    int main()
    {
        int n ;
        int len=0 ;
        int OK=1 ;
        for(int i=0 ;i<26 ;i++)
            for(int j=0 ;j<4 ;j++)
                ans[len++]=i ;
        for(int i=0 ;i<len-3 ;i++)
            vis[ans[i]][ans[i+1]][ans[i+2]][ans[i+3]]=1 ;
        while(OK)
        {
            OK=0 ;
            for(int i=0 ;i<26 ;i++)
            {
                if(!vis[ans[len-3]][ans[len-2]][ans[len-1]][i])
                {
                    vis[ans[len-3]][ans[len-2]][ans[len-1]][i]=1 ;
                    ans[len++]=i ;
                    OK=1 ;
                }
            }
        }
        while(~scanf("%d",&n))
        {
            if(n>len)puts("Impossible") ;
            else
            {
                for(int i=0 ;i<n ;i++)
                    printf("%c",ans[i]+'a') ;
                putchar('
    ') ;
            }
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    chartjs 初步
    QT “error: error writing to -: Invalid argument”
    OTL mySQL
    qtcteater pro 文件配置
    Python os.readlink() 方法
    Python os.read() 方法
    Python os.popen() 方法
    Python os.pipe() 方法
    Python os.pathconf() 方法
    ThinkPHP框架前后台的分页调用
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/3950620.html
Copyright © 2011-2022 走看看