hdu 2846 字典树变形
mark: 题目有字串匹配的过程 有两点
1.为了高效的匹配子串 可以把所有的子串都预处理进去 然后字典树计数就放在最后面
2.在同一个母串处理自串的时候 会有重复的时候 比如abab 这里去重用个标记位就可以了(一开始用map 结果超时了,,, 果然还是想太简单了)
上代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<string>
#define maxn 27
using namespace std;
struct Tri
{
int num,id;
Tri*next[maxn];
Tri()
{
num=,id=;
memset(next,,sizeof(next));
}
};
void buildTri(Tri*root,string str,int ret)
{
for(int i=;i<str.size();i++)
{
int id=str[i]-'a';
if(root->next[id]==NULL) root->next[id]=new Tri();
root=root->next[id];
}
if(root->id!=ret) root->num++,root->id=ret;// 序号不一样的时候 计数 然后标记更新
}
int findTri(Tri *root,string str)
{
for(int i=;i<str.size();i++)
{
int id=str[i]-'a';
if(root->next[id]==NULL) return;
root=root->next[id];
}
return root->num;
}
int main()
{
cin.sync_with_stdio(false);
int t;
string ss;
cin>>t;
Tri *root=new Tri();//
for(int ii=;ii<=t;ii++)
{
cin>>ss;
int len=ss.size();
string zz;
map<string,int> fuck;
for(int i=;i<ss.size();i++)// 预处理过程 将所有的字串都放进去
{
for(int j=;j<=ss.size()-i;j++)
{
zz=ss.substr(i,j);
buildTri(root,zz,ii);
}
}
}
cin>>t;
while(t--)
{
cin>>ss;
cout<<findTri(root,ss)<<endl;
}
return;
}
hdu 2846 字典树变形的更多相关文章
- Repository HDU - 2846 字典树
题意:给出很多很多很多很多个 单词 类似搜索引擎一下 输入一个单词 判断有一个字符串包含这个单词 思路:字典树变体,把每个单词的后缀都扔字典树里面,这里要注意dd是一个单词 但是把d 和dd都放字典树 ...
- POJ 3764 - The xor-longest Path - [DFS+字典树变形]
题目链接:http://poj.org/problem?id=3764 Time Limit: 2000MS Memory Limit: 65536K Description In an edge-w ...
- HDU 1247 Hat’s Words(字典树变形)
题目链接:pid=1247" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=1247 Pro ...
- HDU 5687 字典树插入查找删除
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5687 2016百度之星资格赛C题,直接套用字典树,顺便巩固了一下自己对字典树的理解 #include< ...
- HDU 5384 字典树、AC自动机
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...
- hdu 2112(字典树+最短路)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2072(字典树模板,set,map均可做)
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2072 lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词 ...
- 字典树变形 A - Gaby And Addition Gym - 101466A
A - Gaby And Addition Gym - 101466A 这个题目是一个字典树的变形,还是很难想到的. 因为这题目每一位都是独立的,不会进位,这个和01字典树求最大的异或和是不是很像. ...
- Chip Factory HDU - 5536 字典树(删除节点|增加节点)
题意: t组样例,对于每一组样例第一行输入一个n,下面在输入n个数 你需要从这n个数里面找出来三个数(设为x,y,z),找出来(x+y)^z(同样也可以(y+z)^1)的最大值 ("^&qu ...
随机推荐
- JAVA基础知识|Socket
一.什么是Socket? Socket本身并不是协议,是一套完成TCP.UDP协议的调用接口(API),通过socket我们才能使用TCP/IP协议(JAVA基础知识|TCP/IP协议).Socket ...
- Java并发指南7:JUC的核心类AQS详解
一行一行源码分析清楚AbstractQueuedSynchronizer 转自https://www.javadoop.com/post/AbstractQueuedSynchronizer#toc4 ...
- .NET Standard
A formal specification of the APIs that are common across .NET implementations What is .NET Standard ...
- ExtractIcon function Retrieves a handle to an icon from the specified executable file, DLL, or icon file.
https://msdn.microsoft.com/zh-cn/vstudio/ms648068(v=vs.90)
- train_faster_rcnn.sh
#!/bin/bash set -x set -e export PYTHONUNBUFFERED="True" GPU_ID=$1 DATASET=$2 NET=$3 array ...
- Qt编写自定义控件33-图片切换动画
一.前言 在很多看图软件中,切换图片的时候可以带上动画过渡或者切换效果,显得更人性化,其实主要还是炫一些,比如百叶窗.透明度变化.左下角飞入等,无论多少种效果,核心都是围绕QPainter来进行,将各 ...
- 图解 HTTP 笔记(六)——HTTP 首部
本章主要讲解了 HTTP 首部的结构,已经首部中各字段的用法. 一.HTTP 报文首部 上图是 HTTP 请求报文的结构. HTTP 请求报文由方法.URI.HTTP 版本.HTTP 首部字段等组成. ...
- String字符串的截取
根据某个字段将字符串分割成绩部分 String str = "string number one 1/9/0"; //将字符串由/ 截取成绩部分 String[] strs = s ...
- centos6.x一直停留在进度条的问题
由于屏幕关闭加上长时间没有操作可能导致centos进行深度休眠,此时只能通过电源键来强制重启.可以通过修改X11的配置来禁止休眠,配置文件为/etc/X11/xorg.conf,注意修改此文件前记得备 ...
- mybatis问题。foreach循环遍历数组报错情况,及其解决方法
根据条件查询数据列表,mybatis查询代码如下 如果只查询属于特定部门拥有的数据权限.这需要用 String[ ] codes保存当前部门及其子部门的部门编码. 所以需要在mybatis中遍历编码数 ...