acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 6

    #include<bits/stdc++.h> using namespace std; int m,n; int tr[200005][30],ss; int f[200005]; string s; bool b[2][200005]; inline void add(string st,int bo) { int siz=st.size(),w=0; for(int k=0; k<siz; k++) { if(!tr[w][s[k]-'a'+1]) tr[w][s[k]-'a'+1]=ss; w=tr[w][s[k]-'a'+1]; b[bo][w]=1; } b[bo][w]=1; } int hanshu(int u,int r) { if(~f[u]) return f[u]; if(r==0) { for(int k=1; k<=26; k) { if(!tr[u][k]||!b[0][tr[u][k]]) continue; if(!hanshu(tr[u][k],1)) return f[u]=0; } return f[u]=1; } else { for(int k=1; k<=26; k++) { if(!tr[u][k]||!b[1][tr[u][k]]) continue; if(hanshu(tr[u][k],0)) return f[u]=1; } return f[u]=0; } } int main() { memset(f,-1,sizeof(f)); cin>>n; for(int i=1; i<=n; ++i) cin>>s,add(s,0); cin>>m; for(int i=1; i<=m; ++i) cin>>s,add(s,1); hanshu(0,0); if(!f[0]) cout<<"Nina"; else cout<<"Emilija"; return 0; }

    userId_undefined

    dream

    倔强青铜
    3阅读
    0回复
    1点赞
首页