Luogu P2580 于是他錯(cuò)誤的點(diǎn)名開始了

題目背景
XS中學(xué)化學(xué)競(jìng)賽組教練是一個(gè)酷愛爐石的人。

他會(huì)一邊搓?duì)t石一邊點(diǎn)名以至于有一天他連續(xù)點(diǎn)到了某個(gè)同學(xué)兩次,然后正好被路過的校長發(fā)現(xiàn)了然后就是一頓歐拉歐拉歐拉(詳情請(qǐng)見已結(jié)束比賽CON900)。

題目描述
這之后校長任命你為特派探員,每天記錄他的點(diǎn)名。校長會(huì)提供化學(xué)競(jìng)賽學(xué)生的人數(shù)和名單,而你需要告訴校長他有沒有點(diǎn)錯(cuò)名。(為什么不直接不讓他玩爐石。)

輸入輸出格式
輸入格式:
第一行一個(gè)整數(shù) n,表示班上人數(shù)。接下來 n 行,每行一個(gè)字符串表示其名字(互不相同,且只含小寫字母,長度不超過 50)。第 n+2 行一個(gè)整數(shù) m,表示教練報(bào)的名字。接下來 m 行,每行一個(gè)字符串表示教練報(bào)的名字(只含小寫字母,且長度不超過 50)。

輸出格式:
對(duì)于每個(gè)教練報(bào)的名字,輸出一行。如果該名字正確且是第一次出現(xiàn),輸出“OK”,如果該名字錯(cuò)誤,輸出“WRONG”,如果該名字正確但不是第一次出現(xiàn),輸出“REPEAT”。(均不加引號(hào))

輸入輸出樣例

輸入樣例#1
5
a
b
c
ad
acd
3
a
a
e
輸出樣例

OK
REPEAT
WRONG

非常非常裸的字典樹,看了我前幾篇的應(yīng)該對(duì)字典樹有了解,我也不再多說了;

直接將所有名字建成一棵字典樹,點(diǎn)名時(shí)記錄每個(gè)名字被點(diǎn)到的次數(shù),最后判斷一下就行了;

直接上代碼

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
struct Node{
    int son[27],f,vis;
}N[500010];
int n,m,cnt=1;
char name[55];
void insert(char name[]){
    int now=1;
    for(int i=0;name[i]!='\0';i++){
        if(N[now].son[name[i]-'a']) now=N[now].son[name[i]-'a'];
        else{N[now].son[name[i]-'a']=++cnt; now=cnt;}
    }
    N[now].f=1;
}
int find(char name[]){
    int now=1;
    for(int i=0;name[i]!='\0';i++){
        if(!N[now].son[name[i]-'a']) return -1;
        else now=N[now].son[name[i]-'a'];
    }
    if(N[now].f){
        if(N[now].vis) return 0;
        else{
            N[now].vis=1;
            return 1;
        }
    }
    else return -1;
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s",name);
        insert(name);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%s",name);
        int pd=find(name);
        if(pd==-1) printf("WRONG\n");
        else if(pd==0) printf("REPEAT\n");
        else printf("OK\n");
    }
    return 0;
}

給個(gè)贊謝謝了?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 6,319評(píng)論 0 10
  • 我停了下來,風(fēng)沒有停下來,以凜冽的姿態(tài)繼續(xù)呼號(hào)前行。山口所有的石頭都朝著天云,有一只老鷹在低空無聲地飛過。...
    冰夫閱讀 349評(píng)論 0 0
  • 一個(gè)四歲孩子的無心之過,竟換來兩個(gè)成年人的蓄意報(bào)復(fù),還提前演習(xí)了一遍,廣大網(wǎng)友們說此孕婦動(dòng)作之迅速不去國足有點(diǎn)可惜...
    素顏_人生閱讀 662評(píng)論 0 2

友情鏈接更多精彩內(nèi)容