码迷,mamicode.com
首页 > 其他好文 > 详细

于是他错误的点名开始了

时间:2018-02-25 20:45:14      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:span   har   错误   输入格式   opened   允许   pre   font   badge   

题目背景

XS中学化学竞赛组教练是一个酷爱炉石的人。

他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900)。

题目描述

这之后校长任命你为特派探员,每天记录他的点名。校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名。(为什么不直接不让他玩炉石。)

输入输出格式

输入格式:

 

第一行一个整数 n,表示班上人数。接下来 n 行,每行一个字符串表示其名字(互不相同,且只含小写字母,长度不超过 50)。第 n+2 行一个整数 m,表示教练报的名字。接下来 m 行,每行一个字符串表示教练报的名字(只含小写字母,且长度不超过 50)。

 

输出格式:

 

对于每个教练报的名字,输出一行。如果该名字正确且是第一次出现,输出“OK”,如果该名字错误,输出“WRONG”,如果该名字正确但不是第一次出现,输出“REPEAT”。(均不加引号)

 

输入输出样例

输入样例#1: 
5  
a
b
c
ad
acd
3
a
a
e
输出样例#1: 
OK
REPEAT
WRONG

说明

对于 40%的数据,n≤1000,m≤2000;

对于 70%的数据,n≤10000,m≤20000;

对于 100%的数据, n≤10000,m≤100000。

题解:

依旧是tire树裸题

但表示RE了无数次之后,终于意识到一定要把数组开到足够大(在题目允许的情况下)

小技巧:判断重复查询时,对单词结尾进行一个小改动(详见代码)

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #define ll long long
 6 #include<cstring>
 7 #include<string>
 8 #define DB double
 9 using namespace std;
10 char s[600000];
11 int t[900000][30];
12 int tot,n,Q;
13 int v[9000000],fg;
14 void ins()
15 {
16     int l=strlen(s+1);
17     int now=0;
18     for(int i=1;i<=l;++i)
19     {
20         int k=s[i]-a+1;
21         if(!t[now][k]) t[now][k]=++tot;
22         now=t[now][k];
23     }
24     v[now]=1;
25 }
26 int query()
27 {
28     int cnt=0,now=0,l=strlen(s+1);
29     for(int i=1;i<=l;++i)
30     {
31         int k=s[i]-a+1;
32         if(t[now][k]) now=t[now][k];
33         else return 0;
34     }
35     if(!v[now]) return 0;
36     if(v[now]==1) 
37     {
38         v[now]++;
39         return 1;
40     }
41     return 2;
42 }
43 int main()
44 {
45     scanf("%d",&n);
46     for(int i=1;i<=n;++i)
47     {
48         scanf("%s",s+1);
49         ins();
50     }
51     scanf("%d",&Q);
52     while(Q--)
53     {
54         scanf("%s",s+1);
55         fg=query();
56         if(fg==0) puts("WRONG");
57         if(fg==1) puts("OK");
58         if(fg==2) puts("REPEAT");
59     }
60     return 0;
61 }
View Code

 

疾风怒雨,禽鸟戚戚;霁日光风,草木欣欣。

 

于是他错误的点名开始了

标签:span   har   错误   输入格式   opened   允许   pre   font   badge   

原文地址:https://www.cnblogs.com/adelalove/p/8470089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!