当前位置: 首页 > news >正文

网站是怎么制作的网站建设技术方面

网站是怎么制作的,网站建设技术方面,丽江古城区建设局网站,百度关键词搜索UVA1449 Dominating Patterns 题解 板子题诶。 解法 AC 自动机模板题,因为数据范围比较小,所以不加拓扑排序优化建图即可通过本题。这里简单介绍一下拓扑排序优化建图。 在查找时,每次都暴力的条 f a i l fail fail 指针是很消耗时间的&…

UVA1449 Dominating Patterns 题解

板子题诶。

解法

AC 自动机模板题,因为数据范围比较小,所以不加拓扑排序优化建图即可通过本题。这里简单介绍一下拓扑排序优化建图。

在查找时,每次都暴力的条 f a i l fail fail 指针是很消耗时间的,查找到了一个字符串可能意味着找到了多个字符串,例如我们有两个模式串 bcabc,我们找到了串 abc,这同时意味着我们找到了串 bc,如果每次都去跳失配边的话效率过低,我们可以在找到一个模式串后打标记,最后进行拓扑排序求得最后的答案。

为什么可以使用拓扑排序?

因为失配边都是有向边,而失配边的起点一定比终点深度要深,而且不会存在自环。所以所有失配边所构成的图是一个有向无环图。

另外,这里建图不用真的把边都建出来,统计一下入度就行。

代码

#include<bits/stdc++.h>
namespace fast_IO
{/*** 快读快写。*/
};
using namespace fast_IO;
class AC_auto
{
private:#define LEN 1000001#define N 200int a[LEN][26],val[LEN],flag[LEN],fail[LEN],ind[LEN],cnt,tmp;int ans[N],map[N];std::deque<int> q;
public:inline AC_auto(){memset(fail,0,sizeof(fail)),memset(val,0,sizeof(val)),memset(flag,0,sizeof(flag));memset(a,0,sizeof(a)),memset(ind,0,sizeof(ind));memset(ans,0,sizeof(ans)),memset(map,0,sizeof(map));cnt=1;}inline void clear(){for(int i=0;i<=cnt;i++) memset(a[i],0,sizeof(a[i])),val[i]=flag[i]=fail[i]=ind[i]=0;memset(ans,0,sizeof(ans)),memset(map,0,sizeof(map));cnt=1;}inline void build(){for(int i=0;i<26;i++) a[0][i]=1;q.push_back(1);while(!q.empty()){tmp=q.front();q.pop_front();for(int i=0;i<26;i++)if(a[tmp][i])fail[a[tmp][i]]=a[fail[tmp]][i],ind[fail[a[tmp][i]]]++,q.push_back(a[tmp][i]);else a[tmp][i]=a[fail[tmp]][i];}}inline void add(std::string st,int pos){int now=1;for(int i=0;i<st.size();i++){if(!a[now][st[i]-'a']) a[now][st[i]-'a']=++cnt;now=a[now][st[i]-'a'];}if(!flag[now]) flag[now]=pos;map[pos]=flag[now];}inline void ask(std::string st){int now=1;for(int i=0;i<st.size();i++) now=a[now][st[i]-'a'],val[now]++;}inline void topo_sort(){for(int i=1;i<=cnt;i++) if(!ind[i]) q.push_back(i);while(!q.empty()){tmp=q.front(),q.pop_front();ans[flag[tmp]]=val[tmp],val[fail[tmp]]+=val[tmp];if(!(--ind[fail[tmp]])) q.push_back(fail[tmp]);}}inline std::vector<int> output(const int l,const int r){std::vector<int> ret;int maxi=0;for(int i=l;i<=r;i++)if(ans[map[i]]>maxi) maxi=ans[map[i]],ret.clear(),ret.push_back(i);else if(ans[map[i]]==maxi) ret.push_back(i);out<<maxi<<'\n';return ret;}
};
AC_auto ac_auto;
int n;
std::string s,t[200];
std::vector<int> v;
int main()
{while(1){in>>n;if(n==0) break;ac_auto.clear();for(int i=1;i<=n;i++) in>>t[i],ac_auto.add(t[i],i);ac_auto.build(),in>>s,ac_auto.ask(s),ac_auto.topo_sort(),v=ac_auto.output(1,n);for(int i=0;i<v.size();i++) out<<t[v[i]]<<'\n';}fwrite(Ouf,1,p3-Ouf,stdout),fflush(stdout);return 0;
}
http://www.yayakq.cn/news/677706/

相关文章:

  • 门户网站如何推广相亲网站用什么做的
  • 网站建设开发费用入什么科目稳重大气的公司名字
  • 海口网站制作策划网站建设公司宣传范文
  • 免费的全平台内容系统广州seo网站管理
  • 网站建设都包括什么外贸网站推广服务
  • 商务网站内容建设包括苏州制作网站的公司简介
  • 学校网站建设开发方案书一般网站开发好的框架都有哪些
  • 金坛市建设局网站项目计划书范文模板
  • 怎么选择镇江网站建设专业房产网站建设
  • 无锡 电子商务网站建设互联网怎么做网站
  • 列举五种常用的网站推广方法域名有免费的吗
  • 网站怎么做第三方支付接口打电话给客户怎样介绍自己是做网站的?开场白?
  • 自己做网站如何月入3k多语网站wordpress子站点
  • 请柬网站开发敦煌做网站 条件
  • 河南新乡做网站公司wordpress调用某指定分类栏目
  • 成都网站运营如何开网店做微商
  • 网站留言程序怎么做济南章丘网站建设
  • 哈尔滨口碑好的建站公司开锁在百度上做网站要钱吗
  • 小浪底水利枢纽建设管理局网站wordpress 标签输出页
  • 旅游网站建设策划方案书中山专业门户网站制作平台
  • 中国建设银行春招网站wap手机网站静态模板
  • 网络营销网站建设实验总结德州网站建设推广
  • 网站开发网上宠物店管理系统学网页设计在哪学
  • 设备租赁网站建设出名的建站网站
  • 常德做网站专业公司设计和建设一个网站要多少钱
  • 网站开发微博宁波城乡住房建设局网站
  • 新乡网站开发建站素材网站模板
  • 六安市裕安区建设局网站wordpress图片批量链接
  • 一级a做爰电影免费观看网站外贸网站租用外国服务器好还是自己装一个服务器好
  • 什么是三合一网站建设北京附近做网站的公司