HDU5687-Problem C
来源:互联网 发布:nodejs 性能优化 编辑:程序博客网 时间:2024/05/22 08:04
Problem C
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1096 Accepted Submission(s): 343
Problem Description
度熊手上有一本神奇的字典,你可以在它里面做如下三个操作:
1、insert : 往神奇字典中插入一个单词
2、delete: 在神奇字典中删除所有前缀等于给定字符串的单词
3、search: 查询是否在神奇字典中有一个字符串的前缀等于给定的字符串
1、insert : 往神奇字典中插入一个单词
2、delete: 在神奇字典中删除所有前缀等于给定字符串的单词
3、search: 查询是否在神奇字典中有一个字符串的前缀等于给定的字符串
Input
这里仅有一组测试数据。第一行输入一个正整数N(1≤N≤100000) ,代表度熊对于字典的操作次数,接下来N 行,每行包含两个字符串,中间中用空格隔开。第一个字符串代表了相关的操作(包括: insert, delete 或者 search)。第二个字符串代表了相关操作后指定的那个字符串,第二个字符串的长度不会超过30。第二个字符串仅由小写字母组成。
Output
对于每一个search 操作,如果在度熊的字典中存在给定的字符串为前缀的单词,则输出Yes 否则输出 No。
Sample Input
5insert helloinsert hehesearch hdelete hesearch hello
Sample Output
YesNo
Source
2016"百度之星" - 资格赛(Astar Round1)
Recommend
liuyiding
解题思路:每次插入单词就把相应的字符的出现次数+1,删除的时候先查一遍单词是否出现,若出现了,把前缀的所有字符的出现次数减去最后一个字符的出现次数,再把最后一个字符之后的清零
#include <cstdio>#include <string>#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int maxp=3e6+5;char s[50],x[50];int n,f[maxp][28];int main(){ while(~scanf("%d",&n)) { int sum=0; memset(f[0],0,sizeof(f[0])); while(n--) { scanf("%s %s",s,x); if(s[0]=='i') { for(int i=0,j=0;x[i];i++) { int k=x[i]-'a'+1; if (!f[j][k]) { f[j][k]=++sum; memset(f[sum],0,sizeof(f[sum])); } j=f[j][k]; f[j][0]++; } } if(s[0]=='s') { int flag=1; for (int i=0,j=0;x[i];i++) { int k=x[i]-'a'+1; j=f[j][k]; if(!f[j][0]) { flag=0;break; } } if(flag) printf("Yes\n"); else printf("No\n"); } if(s[0]=='d') { int j=0; for (int i=0;x[i];i++) { int k=x[i]-'a'+1; if(!f[j][k]) {j=0;break;} else j=f[j][k]; } if (!j) continue; int p=j; j=0; for(int i=0;x[i];i++) { int k=x[i]-'a'+1; j=f[j][k]; f[j][0]-=f[p][0]; } memset(f[p],0,sizeof f[p]); } } } return 0;}
0 0
- HDU5687-Problem C
- HDU5687
- hdu5687
- hdu5687
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem c
- Problem C
- Problem C
- Problem C
- Problem C
- Problem C
- Problem-C
- Problem C
- SpringMVC中使用拦截器
- HTML5为什么不需要对DTD进行引用
- Win10 + 64bit + OpenCV3.1 + VS2015
- 2016/09/21 腾讯校招技术面是 记录
- CSS学习笔记
- HDU5687-Problem C
- 单片机C51数据类型和存储器类型
- Mybatis之select元素
- 10.1_Android Training 学习笔记_设计高效的导航
- git rebase修改历史提交
- Spring学习第九天:Spring表达式语言Spel
- MyISAM 和 InnoDB 讲解
- hdoj-1878-欧拉回路
- 反编译之apk1