堂堂一道AC自動機被我們亂搞過了 目前zoj排名第一 從run memory目測還沒人像我們這樣搞的 笑死了
看題目第一遍不太懂第三個條件的意思。
通過樣例,第一個明顯no,第二個yes的構造方法應該是abbabbbabbbb……
由此我們想到,不管題目給定幾個字母,我們只要找到一個字母可以無限增長下去、一個字母有限,且兩個字母組合在一起不構成banned word
只要存在這樣兩個字母,那麼一定可以構造出來
#include#include const int maxlen=1e3+5; int n,m,jud[30][30],vis[30]; char s[maxlen]; void check() { int vvis[30],q[30],num=0; memset(vvis,0,sizeof(vvis)); for (int i=0;s[i];i++) { vvis[s[i]-'a']++; if (vvis[s[i]-'a']==1) q[num++]=s[i]-'a'; } if (num==2) { if (vvis[q[0]]==1) jud[q[1]][q[0]]=0; if (vvis[q[1]]==1) jud[q[0]][q[1]]=0; } } int main() { int t; scanf("%d",&t); while (t--) { scanf("%d%d",&n,&m); for (int i=0;i