当前位置: 首页 > 编程日记 > 正文

Bzoj2780: [Spoj]8093 Sevenk Love Oimaster

题目

传送门

Sol

就是广义\(sam\)
然后记录下每个状态属于哪些串,开\(set\)维护
\(parent\)树上启发式合并一下就好了

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;IL int Input(){RG int x = 0, z = 1; RG char c = getchar();for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);return x * z;
}const int maxn(2e5 + 5);int trans[26][maxn], fa[maxn], len[maxn], size[maxn], last, tot = 1;
int l[maxn], r[maxn], n, q, t[maxn], id[maxn];
set <int> :: iterator it;
set <int> ed[maxn];
char s[maxn], qs[maxn << 1];IL void Extend(RG int c){RG int p = last, np = ++tot;len[last = np] = len[p] + 1;while(p && !trans[c][p]) trans[c][p] = np, p = fa[p];if(!p) fa[np] = 1;else{RG int q = trans[c][p];if(len[q] == len[p] + 1) fa[np] = q;else{RG int nq = ++tot;fa[nq] = fa[q], len[nq] = len[p] + 1;for(RG int i = 0; i < 26; ++i) trans[i][nq] = trans[i][q];fa[q] = fa[np] = nq;while(p && trans[c][p] == q) trans[c][p] = nq, p = fa[p];}}
}int main(){n = Input(), q = Input();for(RG int i = 1; i <= n; ++i){l[i] = r[i - 1];scanf(" %s", s + l[i]);r[i] = l[i] + strlen(s + l[i]), last = 1;for(RG int j = l[i]; j < r[i]; ++j) Extend(s[j] - 'a');}for(RG int i = 1; i <= tot; ++i) ++t[len[i]];for(RG int i = 1; i <= tot; ++i) t[i] += t[i - 1];for(RG int i = 1; i <= tot; ++i) id[t[len[i]]--] = i;for(RG int i = 1; i <= n; ++i)for(RG int j = l[i], nw = 1; j < r[i]; ++j){nw = trans[s[j] - 'a'][nw];ed[nw].insert(i);}for(RG int i = tot; i; --i){RG int p = id[i];size[p] = ed[p].size();if(size[p] > ed[fa[p]].size()) swap(ed[p], ed[fa[p]]);for(it = ed[p].begin(); it != ed[p].end(); ++it)ed[fa[p]].insert(*it);}for(RG int i = 1; i <= q; ++i){scanf(" %s", qs);RG int nw = 1, l = strlen(qs);for(RG int j = 0; j < l; ++j) nw = trans[qs[j] - 'a'][nw];printf("%d\n", size[nw]);}return 0;
}

转载于:https://www.cnblogs.com/cjoieryl/p/8940867.html

相关文章:

LR分析法从理解到运用

1、 LR分析器 解释&#xff1a; 分析栈包括符号栈和相应状态栈 分析表包括ACTION表和GOTO表 Ⅰ动作表元素action[Si,aj] 表示当前栈顶状态为S&#xff0c;输入符号为a时所执行的动作。有四种情况&#xff1a;S(移进)&#xff0c;r(归约)&#xff0c;acc(接受)&#xff0c;erro…

Android 判断SD卡是否存在及容量查询

转载&#xff1a;http://blog.csdn.net/xinzheng_wang/article/details/7827775 Android 判断SD卡是否存在及容量查询的简单方法如下&#xff1a;首先要在AndroidManifest.xml中增加SD卡访问权限 [html] view plaincopy <!-- 在SDCard中创建与删除文件权限 --> <uses…

Spring Boot 教程(三): Spring Boot 整合Mybatis

教程简介 本项目内容为Spring Boot教程样例。目的是通过学习本系列教程&#xff0c;读者可以从0到1掌握spring boot的知识&#xff0c;并且可以运用到项目中。如您觉得该项目对您有用&#xff0c;欢迎点击收藏和点赞按钮&#xff0c;给予支持&#xff01;&#xff01;教程连载中…

电子学会 软件编程(图形化)一级训练营

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程&#xff08;图形化&#xff09;一级训练营 试题来源 青少…

win10 安装 python报错-已安装这个产品的另一版本

尝试清理干净电脑上关于之前安装的Python3&#xff0c;在 输入winR 输入cmd 回车 输入 python 回车 却看到 C:\Users\86136>python ‘python’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 但是再安装&#xff0c;又报出严重错误。 最终解决方案&am…

POJ1276Cash Machine

http://poj.org/problem?id1276 题意 &#xff1a; 给你一个目标钱数&#xff0c;再给你钱币的种数和钱币的面值&#xff0c;让你用这些钱凑出不大于目标钱数的钱然后输出这个最接近且不大于目标钱数的钱。 思路 &#xff1a; 背包问题&#xff0c;还是多重背包&#xff0c;就…

Python中处理时间 —— time模块

time模块 逝去的秒数 逝去的秒数表示从某个时间&#xff08;Python中是“Thu Jan 1 07:00:00 1970”&#xff09;开始到现在所经过的秒数。 使用 time.time() 函数可以获得逝去的秒数&#xff1a; >>time.time() 1388330058.8643time.time()返回一个浮点数&#xff0c;可…

学编程必看:逻辑思维测试

2021.09 电子学会图形化一级考试有这样的一个题目&#xff1a; 如下图所示&#xff0c;井深7米&#xff0c;有个蜗牛从井底往上爬&#xff0c;白天爬3米&#xff0c;晚上往下坠2米&#xff0c;问蜗牛几天能从井里爬出来&#xff1f;&#xff08; &#xff09; A. 4B. 5C. 6D. …

explicit specialization of ‘Race‘ after instantiation ,implicit instantiation first required here。

报错1&#xff1a; E:\project\qt\Pokemon3\PokemonServer\pokemon.cpp:470: error: specialization of ‘Race::Race() [with int N 0]’ after instantiation Race<0>::Race() : PokemonBase(ATK) ^ 报错2&#xff1a; explicit specialization of ‘Race’ after ins…

(转载)Linux usbtouchscreen驱动分析

在Linux内核中自带USB触摸屏驱动&#xff0c;以linux-2.6.33.3\drivers\input\touchscreen.c为例&#xff0c;进行解析&#xff1a; 1.驱动加载&#xff1a; static int __init usbtouch_init(void){return usb_register(&usbtouch_driver); //驱动注册} 其中usbtouch_dr…

关于事务隔离级别

2019独角兽企业重金招聘Python工程师标准>>> 第一种 read uncommitted 此状态下脏读&#xff0c;不可重复读&#xff0c;虚读都有可能发生。此状态下两个人同时操作一个数据库表一边开启事务没有提交&#xff0c;另一边也开启事物开始更改数据但是也没有提交&#x…

Datawhale组队学习周报(第047周)

本周报总结了从 2021年01月03日至2022年01月09日&#xff0c;Datawhale组队学习的运行情况&#xff0c;我们一直秉承“与学习者一起成长的理念”&#xff0c;希望这个活动能够让更多的学习者受益。 第 32 期组队学习一共 11 门开源课程&#xff0c;共组建了 11 个学习群&#…

讲座记录:从码农到架构师(精简版)

1.框架学习 不要过于在乎细节 学封装思想 不追新 否则太累 每个框架的设计理念不同 spring 比structs 优秀在哪&#xff1f; 关注增量而非全量 2.如何快速学习一门新技术 “新框架的产生速度远大于个人的学习速度” 先快速学习:了解模板&#xff0c;套路-重复出现的代码 类似做…

Enterprise Library 4 数据访问应用程序块

Enterprise Library 数据访问应用程序块简化了实现常规数据访问功能的开发任务。应用程序可以在各种场景中使用此应用程序块&#xff0c;例如为显示而读取数据、传递数据穿过应用程序层( application layers)、以及将修改的数据提交回数据库系统。应用程序块包含对存储过程和内…

虚拟货币市值回调到4100亿整数关口,EOS逆势站上100关口

虚拟货币虚拟货币市值在过去24小时中&#xff0c;虚拟货币整体回调&#xff0c;市值为4100亿美元。只有EOS逆势上扬&#xff0c;已经站上了100元&#xff08;17.5美元&#xff09;上方。虚拟货币市场距离12月份最高点几乎只有一步之遥。EOS走势EOS这种疯狂的势头是很多人预料未…

【NCEPU】韩绘锦:图信号处理与图卷积神经网络

韩绘锦是华北电力大学数理系大四的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;/Datawhale成员&#xff0c;也在天池比赛中取得了不错的成绩&#xff0c;现保送大连理工大学软件工程学院深造。 希望参与我们线下组队学习的同学&#xff0c;可以在…

什么是python第三方库

Python计算生态 标准库 第三方库 标准库&#xff1a;随解释器直接安装到操作系统中的功能模块 第三方库&#xff1a;需要经过安装才能使用的功能模块 模块的概念&#xff1a;库Library、包Package、模块Module 出处&#xff1a;北理工Python慕课

Task01:青少年软件编程(Scratch)等级考试模拟卷(二级)

试题来源 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019.09】青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019.12】青少年软件编程&#xff08;Scratch&#xff09;等级考试试…

App功能测试的注意点

好几个月没有写博客记录学习心得了&#xff0c;这次回老家深夜闲来无事写一篇记录下这段时间的面试心得&#xff0c;这次面试过程很多面试官都问APP的有关测试&#xff0c;下面我就自己的认识和工作中的经验来谈谈自己对APP测试的认识&#xff1a; 1.push消息推送测试 检查push…

编程以外积累: 如何给项目生成类似VS2008的说明文档

1&#xff1a;【下载】 目前微软提供的官方开源工具 Sandcastle 结果跑到项目中一看&#xff0c;抬头就来了这么一段&#xff1a; The Sandcastle CodePlex project is no longer under active development by Microsoft and as such, there will be no future releases to t…

python的turtle绘图体系入门必看(一)

1 设置窗体 turtle.setup(width,height,startx,starty) 说明&#xff1a; setup()函数不是必须的前两个参数代表窗体的横向宽与纵向长后两个参数可选&#xff0c;表示窗体距离屏幕的横向距离和纵向距离&#xff08;也可以理解为窗体左上角距离屏幕左上角的横向和纵向距离&…

交换两个变量的值不使用第三个变量(Java)

关于这个问题网上有好多答案&#xff0c;最近有人说这是个奇葩问题 个人测试了一把&#xff0c;如果是普通的数字的话&#xff0c;基本上没有问题 public static void main(String[] args) {int a 2147483647;int b 2147483646;// aab;// ba-b;// aa-b;// b a (a b) * 0; …

Task02:青少年软件编程(Scratch)等级考试模拟卷(二级)

电子学会 软件编程&#xff08;图形化&#xff09;二级训练营 试题来源 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019.09】青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019…

Visual Studio 15.7预览版4改进Git、C++支持

\看新闻很累&#xff1f;看技术新闻更累&#xff1f;试试下载InfoQ手机客户端&#xff0c;每天上下班路上听新闻&#xff0c;有趣还有料&#xff01;\\\对于即将到来的Visual Studio 2017 15.7&#xff0c;微软已经发布了多个新的预览版本。这些版本的变更很有限&#xff0c;似…

python库引用的3种方式比较

方法一 import 库名 使用方式&#xff1a; <库名>.<函数名>(<函数参数>) 方法二 from 库名 import 函数名/* 使用方式&#xff1a; <函数名>(<函数参数>) 第一种方法可以避免第三方库函数和自定义函数重名 第二种更简洁&#xff0c;适用于引用…

使用livereload实现自动刷新

livereload是一个web开发辅助工具&#xff0c;当我们修改完html、css和js的时候会自动刷新浏览器&#xff0c;解放码农的双手。这样在双屏切图、写js代码的时候会提高很多效率。livereload有很多版本&#xff0c;比如基于ruby的版本&#xff0c;我们今天介绍的是nodegruntchrom…

Task03:青少年软件编程(Scratch)等级考试模拟卷(二级)

电子学会 软件编程&#xff08;图形化&#xff09;二级训练营 试题来源 青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019.09】青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;二级&#xff09;【2019…

java静态代理与动态代理

2019独角兽企业重金招聘Python工程师标准>>> 代理模式是java常见的设计模式。其目的是为其他对象提供一个代理以控制对某个真实对象的访问。通过代理类这一中间层&#xff0c;有效控制对真实委托类的对象的直接访问&#xff0c;同时可以实现自定义的控制策略。 根据…

python的turtle绘图体系入门必看(二)

1 turtle画笔控制函数 画笔操作后一直有效&#xff0c;一般成对出现 turtle.penup() 别名 turtle.pu() 画笔抬起&#xff0c;海龟在飞行(不在画布上留下图案) turtle.pendown() 别名 turtle.pd() 画笔落下&#xff0c;海龟在爬行 turtle.pensize(width) 别名 turtle.width(wi…

MSSQL2005外网IP的1433端口开启方法

打开SQL Server Configuration Manager&#xff0c;在SQL server配置管理器展开SQL server 2005网络配置-->SQLEXPRESS 的协议-->双击TCP/IP协议-->ip地址将1433端口启用&#xff0c;重启下MSSQL服务才能生效&#xff0c;示例图&#xff1a; 重启下MSSQL服务才能生效转…