吸氧程序???
  • 板块灌水区
  • 楼主letitdown
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/4/23 17:12
  • 上次更新2023/11/5 00:13:15
查看原帖
吸氧程序???
451066
letitdown楼主2021/4/23 17:12

P2322

为什么蒟弱的程序不开O2 70分WA,开了就过了??

#include<bits/stdc++.h>
using namespace std;
int read(){int x=0;char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x;}
struct tir
{
    int son[26],fail,s;
}tire[605];
int num=1,n,fa[605*(1<<13)],ans[605*(1<<13)];char s[55];
void insert(char *s,int k)
{
    int len=strlen(s),u=1;
    for(int i=0;i<len;i++)
    {
        int v=s[i]-'A';
        if(!tire[u].son[v])tire[u].son[v]=++num;
        u=tire[u].son[v];
    }
    tire[u].s|=1<<(k-1);
}
queue<int>q,Q;
void build()
{
    for(int i=0;i<26;i++)tire[0].son[i]=1;
    q.push(1);
    while(!q.empty())
    {
        int u=q.front(),F=tire[u].fail;q.pop();
        for(int i=0;i<26;i++)
        {
            int v=tire[u].son[i];
            if(!v)
            {
                tire[u].son[i]=tire[F].son[i];
                continue;
            }
            tire[v].fail=tire[F].son[i];tire[v].s|=tire[tire[F].son[i]].s;
            q.push(v);
        }
    }
}
bool vis[605][1<<13];
int t,c[55],co,cnt;
int main()
{
    n=read();
    for(int i=1;i<=n;i++)
    {
        scanf("%s",s);
        insert(s,i);
    }
    build();
    q.push(0);Q.push(0);vis[0][0]=1;
    while(!q.empty())
    {
        int u=q.front(),v=Q.front();
        q.pop();Q.pop();
        if(v==((1<<n)-1))
        {
            while(t)
            {
                c[++co]=ans[t];
                t=fa[t];
            }
            for(int i=co-1;i>=1;i--)printf("%c",c[i]+'A');
            return 0;
        }
        for(int i=0;i<26;i++)
        {
            if(!vis[tire[u].son[i]][v|tire[tire[u].son[i]].s])
            {
                vis[tire[u].son[i]][v|tire[tire[u].son[i]].s]=1;
                q.push(tire[u].son[i]);
                Q.push(v|tire[tire[u].son[i]].s);
                fa[++cnt]=t;
                ans[cnt]=i;
            }
        }
        t++;
    }
}
2021/4/23 17:12
加载中...