博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2896
阅读量:5291 次
发布时间:2019-06-14

本文共 1567 字,大约阅读时间需要 5 分钟。

EASY题

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int dictsize=130;const int QN=400000;bool nvr[505];int n,m,ans_cnt,qf,ql;struct Node { Node *fail; Node *next[dictsize]; int count; Node (){ for(int i=0;i
next[index]) p->next[index]=new Node(); p=p->next[index]; i++; } p->count=counts;}void set_fail(){ int i=0; qf=ql=0; root->fail=NULL; que[ql++]=root; Node *tmp,*p; while(qf!=ql){ tmp=que[qf++]; p=NULL; for(i=0;i<=128;i++){ if(tmp->next[i]){ if(tmp==root) tmp->next[i]->fail=root; else{ p=tmp->fail; while(p){ if(p->next[i]){ tmp->next[i]->fail=p->next[i]; break; } p=p->fail; } if(!p) tmp->next[i]->fail=root; } que[ql++]=tmp->next[i]; } } }}int query(){ int i=0,index,cnt=0; Node *p=root,*tmp; while(str[i]){ index=str[i]-31; while(!p->next[index]&&p!=root) p=p->fail; p=p->next[index]; p=p?p:root; tmp=p; while(tmp!=root){ if(tmp->count>0){ if(!nvr[tmp->count]){ nvr[tmp->count]=true; cnt++; } } tmp=tmp->fail; } i++; } return cnt;}int main(){ while(scanf("%d",&n)!=EOF){ root=new Node(); for(int i=1;i<=n;i++){ scanf("%s",inser); Insert_Trie(i); } ans_cnt=0; set_fail(); scanf("%d",&m); for(int i=1;i<=m;i++){ memset(nvr,false,sizeof(nvr)); scanf("%s",str); if(query()>0){ ans_cnt++; printf("web %d:",i); for(int k=0;k<=500;k++){ if(nvr[k]) printf(" %d",k); } printf("\n"); } } printf("total: %d\n",ans_cnt); } return 0;}

  

转载于:https://www.cnblogs.com/jie-dcai/p/4306658.html

你可能感兴趣的文章
标识符
查看>>
Swift 常量&变量
查看>>
Sqli labs系列-less-4 这关好坑!!!
查看>>
路由跟踪工具0trace
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
T-SQL触发器,限制一次只能删除一条数据
查看>>
boost库使用:vs2013下boost::container::vector编译出错解决
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
理解运算符重载 4
查看>>
快来熟练使用 Mac 编程
查看>>
第二周
查看>>
断言简介
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
plsql使用,为什么可以能看见其他用户的表
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
Scripting Java #3:Groovy与invokedynamic
查看>>
2014-04-21-阿里巴巴暑期实习-后台研发-二面经验
查看>>
数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列
查看>>
使用pager进行分页
查看>>