2016"百度之星" - 资格赛(Astar Round1) Problem C
2024-09-02 02:13:46
字典树。
插入的时候update一下节点出现的次数。
delete的时候,先把前缀之后的全删了。然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数。
前缀从上到下再检查一遍,如果出现了次数为0的节点,也删去。
#include <stdio.h>
#include <math.h>
#include<cstring>
#include<cmath>
#include<map>
#include<string>
#include<algorithm>
using namespace std; struct Node
{
int val;
int f[];
} node[]; int root,n;
char op[], s[];
int tot; int newnode()
{
++tot;
node[tot].val=;
for(int i=; i<; i++) node[tot].f[i]=-;
return tot;
} void Insert()
{
int p=root;
for(int i=; s[i]; i++)
{
if(node[p].f[s[i]-'a']==-) node[p].f[s[i]-'a']=newnode();
p=node[p].f[s[i]-'a'];
node[p].val++;
}
} void Delete()
{
int p=;
bool Find=;
for(int i=; s[i]; i++)
{
if(node[p].f[s[i]-'a']==-)
{
Find=;
break;
}
p=node[p].f[s[i]-'a'];
}
if(Find==) return; for(int i=; i<; i++) node[p].f[i]=-; int Val=node[p].val; p=root;
for(int i=; s[i]; i++)
{
p=node[p].f[s[i]-'a'];
node[p].val=node[p].val-Val;
} p=;
for(int i=; s[i]; i++)
{
int tmp=node[p].f[s[i]-'a'];
if(node[tmp].val==)
{
node[p].f[s[i]-'a']=-;
break;
}
p=node[p].f[s[i]-'a'];
}
} void Search()
{
int p=root; bool flag=;
for(int i=; s[i]; i++)
{
if(node[p].f[s[i]-'a']==-)
{
flag=;
break;
}
p=node[p].f[s[i]-'a'];
} if(flag) printf("No\n");
else printf("Yes\n");
} int main()
{
while(~scanf("%d",&n))
{
tot=; root=;
for(int i=; i<; i++) node[root].f[i]=-;
for(int i=; i<=n; i++)
{
scanf("%s%s",op,s);
if(strcmp(op,"insert")==) Insert();
else if(strcmp(op,"delete")==) Delete();
else if(strcmp(op,"search")==) Search();
}
}
return ;
}
最新文章
- web前端基础知识 - Django进阶
- matlab神经网络实验
- UI基础之UITextField相关
- Top JavaScript Frameworks, Libraries &; Tools and When to Use Them
- Oracle VM VirtualBox虚拟机安装系统
- 关于C#虚函数和构造函数的一点理解
- Entity Framework 教程(转)
- leetcode其余题目
- C# Delegate 异步调用
- OpenStack学习推荐
- 3、MyBatis.Net学习笔记之增删改
- IIS给网站地址配置成HTTPS的
- 问题解决: WordPress on SAE注册邮件无法发送
- 201521123108 《Java程序设计》第7周学习总结
- 201521123003《Java程序设计》第4周学习总结
- 每天学点SpringCloud(七):路由器和过滤器-Zuul
- 2017-9-8-李明Linux:Linux应用与发展
- 17.vue移动端项目二
- 华为核心交换机绑定IP+MAC+端口案例
- Python删除文件及进行文件夹压缩
热门文章
- c#操作oracle的通用类
- jquery完美实现textarea输入框限制字数
- PHP字符串函数试题
- 概率好题 Light OJ 1027
- make: *** No rule to make target `out
- redis 进阶
- MyEclipse build path no actions available
- VB 对象变量或with块变量未设置
- 8.5 sikuli 集成进eclipse 报错:can&#39;t be found on the disk
- oracle10g遇到ORA-16038日志无法归档问题