字符串练习1 于是他错误的点名开始了(Trie)
题目链接在这里:P2580 于是他错误的点名开始了 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
是一道trie树的板子题,注意理解trie树的每一个节点代表的是一个状态,这个状态是一个前缀。
1 #include "bits/stdc++.h"
2 using namespace std;
3 const int MAX=5e5+5;
4 int n,m;
5 struct Str{
6 int str[MAX][30],tot;
7 int cnt[MAX];
8 bool vis[MAX];
9 Str(){
10 tot=0;
11 memset(vis,false,sizeof(vis));
12 memset(str,0,sizeof(str));
13 memset(cnt,0,sizeof(cnt));
14 }
15 void insert(char *s){
16 int i,j,p=0;
17 int ls=strlen(s+1);
18 for (i=1;i<=ls;i++){
19 if (str[p][s[i]-'a']==0){
20 str[p][s[i]-'a']=++tot;
21 p=tot;
22 }
23 else p=str[p][s[i]-'a'];
24 }
25 vis[p]=true;
26 }
27 int check(char *s){
28 int i,j,ls,p=0;
29 ls=strlen(s+1);
30 for (i=1;i<=ls;i++){
31 if (str[p][s[i]-'a']==0) return 0;
32 p=str[p][s[i]-'a'];
33 }
34 if (!vis[p]) return 0;
35 if (cnt[p]==0){
36 cnt[p]++;
37 return 1;
38 }
39 else return 2;
40 }
41 }ss;
42 int main(){
43 int i,j;char s[MAX];
44 scanf("%d",&n);
45 for (i=1;i<=n;i++){
46 scanf("\n%s",s+1);
47 ss.insert(s);
48 }
49 scanf("%d",&m);
50 for (i=1;i<=m;i++){
51 scanf("\n%s",s+1);
52 j=ss.check(s);
53 if (j==0) printf("WRONG\n");
54 if (j==1) printf("OK\n");
55 if (j==2) printf("REPEAT\n");
56 }
57 return 0;
58 }
字符串练习1 于是他错误的点名开始了(Trie)的更多相关文章
- 于是他错误的点名开始了 [Trie]
于是他错误的点名开始了 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已 ...
- P2580 于是他错误的点名开始了(trie)
P2580 于是他错误的点名开始了 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉 ...
- luoguP2580 于是他错误的点名开始了 [Trie]
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900). ...
- Luogu P2580 于是他错误的点名开始了 Trie树 字典树
字典树裸题.每次插入询问串,查询的时候拿出来直接查,信息保留在节点上. #include <bits/stdc++.h> using namespace std; char s[51]; ...
- luogu2580 于是他错误的点名开始了 Trie树
模板题 #include <iostream> #include <cstring> #include <cstdio> using namespace std; ...
- luogu P2580 于是他错误的点名开始了
luogu P2580 于是他错误的点名开始了 https://www.luogu.org/problem/show?pid=2580 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边 ...
- spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson进行json字符串化的时候出现错误
问题: spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson 2.7.0 进行json字符串化的时候出现错误. 解决办法: 通过在 ...
- [Luogu 2580] 于是他错误的点名开始了
[Luogu 2580] 于是他错误的点名开始了 不用好奇我为什么突然发水题题解- 突然觉得自己当年的幼儿园码风太幼稚,就试图把数据结构什么的用指针重写一遍- 想当年因为空间开太大而全 RE,调了一下 ...
- (转)解决fasterxml中string字符串转对象json格式错误问题(无引号 单引号问题)
原文地址:解决fasterxml中string字符串转对象json格式错误问题 com.fasterxml.jackson.databind.ObjectMapper mapper = new com ...
- P2580 于是他错误的点名开始了
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900). ...
随机推荐
- 如何修改vagrant系统的root用户密码
1. 先使用vagrant 用户登录. 2. $sudo passwd root #按照提示输入两次新的密码,并加以确认. 然后就可以修改root用户密码
- Anaconda之conda常用命令介绍
anaconda用法: 查看已经安装的包: pip list 或者 conda list 安装和更新: pip install requests pip install requests --upgr ...
- git常用命令与AndroidStudio常用快捷键
git相关内容: 产生密钥:cd ~/.ssh (C:\Users\账户名称\.ssh)生成密钥:ssh-keygen -t rsa -C "your_email@youremail.com ...
- vector 搜罗最强版
vector 常见用法(以int类型为例) https://www.cnblogs.com/YJthua-china/p/6550960.html 概括描述总体vector,包括内存的探讨 https ...
- webstrom配置ES6 file watch没有生效
参考了文章https://www.cnblogs.com/kiimi/p/8663467.html设置后,依然没有看到编译后的文件,然后设置了输出文件夹为当前项目,再重启webstrom就看到了--
- Color the ball HDU - 1556 _差分
N名同学拍成一排,编号为1,2,3,4 -- N.现在有一位老师需要检查所有同学的出勤情况,他会进行点名,每次给出两个数a,b,并且保证a小于等于b,这个区间内的所有同学都会被点名一次,老师会进行N次 ...
- opencv对图片画框写文字
业务背景:对图片进行画框后调用排序方法按照"从上到下,从左到右"对已经画的框进行排序.排序方法当前有缺陷,修复后需要验证. 目前有如下信息: 原始图片地址 图片对应的每个框的坐标( ...
- CSS3-3D导航(transform:rotate)
借助transform:rotate实现上图的3D导航效果 具体代码如下 1 <div class="nav"> 2 <ul> 3 <li> 4 ...
- ssh反向通信
##先决条件为:一个有公网IP的VPS(虚拟主机),我使用的是国内的腾讯云,您也可以选择阿里云,亚马逊等各种厂商产品.这台机器的操作系统为 centos 7.0 ,IP 为 A.A.A.A #双内网主 ...
- jquery 判断字符串长度
function titleLength(str) { var strLength = 0; var list = str.split(""); for (var i = 0; i ...