Singing Superstar HDU - 7064

Singing Superstar HDU - 7064

题意:

问在串T中出现了几次不相交的串S?
每次有n个串S询问

题解:

AC自动机板子题。。
直接上模板

代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
const int maxnode= 5e5;
const int sigma_size= 26;
int ans= 0;
template <typename T> inline void read(T& x)
{T f= 1;x= 0;char ch= getchar();while (0 == isdigit(ch)) {if (ch == '-')f= -1;ch= getchar();}while (0 != isdigit(ch))x= (x << 1) + (x << 3) + ch - '0', ch= getchar();x*= f;
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
struct AC_Automata
{int ch[maxnode][sigma_size];int val[maxnode]; // 以单词结尾的个数int f[maxnode]; // fail函数int last[maxnode]; // last[i]=j表j节点表示的单词是i节点单词的后缀,且j节点是单词节点int sz;int cnt[maxnode]; //非单词节点vis=0,单词节点vis=1.如果用find找到了单词i节点,那么vis=0.int pos[maxnode], len[maxnode];void init(){sz= 1;memset(ch[0], 0, sizeof(ch[0]));val[0]= 0;last[0]= f[0]= 0;memset(cnt, 0, sizeof(cnt));memset(pos, 0, sizeof(pos));memset(len, 0, sizeof(len));}void insert(char* s){int n= strlen(s), u= 0;for (int i= 0; i < n; i++) {int id= s[i] - 'a';if (ch[u][id] == 0) {ch[u][id]= sz;memset(ch[sz], 0, sizeof(ch[sz]));val[sz++]= 0;}u= ch[u][id];}val[u]= 1;len[u]= n;}void getFail(){queue<int> q;last[0]= f[0]= 0;for (int i= 0; i < sigma_size; i++) {int u= ch[0][i];if (u) {f[u]= last[u]= 0;q.push(u);}}while (!q.empty()) {int r= q.front();q.pop();for (int i= 0; i < sigma_size; i++) {int u= ch[r][i];if (u == 0)continue;q.push(u);int v= f[r];while (v && ch[v][i] == 0)v= f[v];f[u]= ch[v][i];last[u]= val[f[u]] ? f[u] : last[f[u]];}}}void print(int i, int pos1){if (val[i]) {if (pos[i] + len[i] <= pos1) {pos[i]= pos1;cnt[i]++;}print(last[i], pos1);}}void find(char* s){int n= strlen(s), j= 0;for (int i= 0; i < n; i++) {int id= s[i] - 'a';while (j && ch[j][id] == 0)j= f[j];j= ch[j][id];if (val[j])print(j, i + 1);else if (last[j])print(last[j], i + 1);}}int find_T(char* s){int n= strlen(s), u= 0;for (int i= 0; i < n; i++) {int id= s[i] - 'a';u= ch[u][id];}return cnt[u];}
};
AC_Automata ac;char word[100080][50];
char s[100005];
int main()
{int n;int T;int cas= 0;read(T);while (T--) {scanf("%s", &s);scanf("%d", &n);ac.init();for (int i= 1; i <= n; i++) {scanf("%s", word[i]);ac.insert(word[i]);}ac.getFail();ac.find(s);for (int i= 1; i <= n; i++) {printf("%d\n", ac.find_T(word[i]));}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core Web 项目文件介绍

ASP.NET Core Web 项目文件在本视频中&#xff0c;我们将探索并了解asp.net core项目文件。 我们使用C&#xff03;作为编程语言&#xff0c;因此项目文件具有.csproj扩展名。如果您使用过以前版本的ASP.NET&#xff0c;那么您可能对此文件非常熟悉&#xff0c;但此文件中包含的…

[ZJOI2016] 小星星(树型dp + 状压dp + 容斥)

problem luogu-P3349 solution 这个数据首先就能想到状压 dpdpdp。 先考虑在树上的朴素 dp(i,j,S):dp(i,j,S):dp(i,j,S): 节点 iii 的对应原图编号为 jjj&#xff0c;其子树对应的编号构成的点集为 SSS 的方案数。 需要满足两个限制条件&#xff1a; 原图的每个节点只能被…

GCD Game HDU - 7061

GCD Game HDU - 7061 题意&#xff1a; 有n个数ai&#xff0c;两个人轮流操作&#xff0c;每次选择一个数ai&#xff0c;再人选一个x(1<x<ai)&#xff0c;然后用gcd(ai,x)代替ai 谁先不能操作谁先输掉比赛 题解&#xff1a; 第一反应nim游戏&#xff0c;gcd是取最大公…

[ZJOI2016]旅行者(网格图分治最短路)

problem luogu-P3350 solution 据说&#xff0c;网格图最短路用分治是一个人人皆知的套路。对不起我不是人 类比整体二分的算法流程。 考虑在一个 (xl,yl)−(yl,yr)(xl,yl)-(yl,yr)(xl,yl)−(yl,yr) 矩阵内处理 [ql,qr][ql,qr][ql,qr] 的询问。 以矩阵的中界线 mid\text{…

DotNetCore 3.0 助力 WPF 开发

前言Visual Studio 2019 已经正式发布了&#xff0c;DotNetCore 3.0 的正式版也指日可待。在之前的版本中&#xff0c;作为一名基于微软生态的传统 WPF 程序员看着隔壁同学在开发 DotNetCore 网站时用着各种特性好生羡慕&#xff0c;想着巨硬啥时候能让客户端开发者也能尝尝甜头…

H - Square Card HDU - 7063

H - Square Card HDU - 7063 题意&#xff1a; 有两个圆形区域&#xff0c;一个是得分区域&#xff0c;一个是获得奖金区域&#xff0c;现在你有一个边长为a的正方形,当正方形在如果在某一时刻它严格在圆形范围内&#xff0c;才算合法。 问把牌扔到任意的位置被得分和同时获得…

【刷题记录】排列dp

文章目录[AtCoder-ABC209-f] Deforestation[AtCoder-Educational DP Contest-T]Permutation「JOI Open 2016」摩天大楼topcoder srm 489 div1 lev3 : AppleTrees[CodeForces-626F] Group Projects[TopCoder] Seatfriends小结[AtCoder-ABC209-f] Deforestation 考虑相邻的两棵树…

《从零开始学ASP.NET CORE MVC》:VS2019创建ASP.NET Core Web程序(三)

创建ASP.NET Core Web应用程序如果您使用的是VS2017请看 VS2017创建ASP.NET Core Web程序(三)在这个视频中我们将讨论可用的不同项目模板及其功能预制的项目模板有什么不同&#xff0c;哪些是可以使用的&#xff0c;以及他们的作用。在Visual Studio 2019中创建新的ASP.NET Cor…

ASP.NET Core 沉思录 - 结构化日志

在 《ASP.NET Core 沉思录 - Logging 的两种介入方法》中我们介绍了 ASP.NET Core 中日志的基本设计结构。这一次我们来观察日志记录的格式&#xff0c;并进一步考虑如何在应用程序中根据不同的需求选择不同的日志记录形式。太长不读&#xff1a;直接飞到文章最后 :-DMicrosoft…

[CEOI2016] kangaroo(排列dp)

problem luogu-P5999 solution 每个点只能跳一次&#xff0c;显然跳出来形成的顺序是一个排列。不难联想到最近刷的排列 dpdpdp。 然后&#xff0c;我觉得难点在于怎么转化这个跳的规则&#xff0c;因为现在并不确定能否按排列 dpdpdp 一样分段做。 跳的顺序形成的排列必须…

D - Counting Stars HDU - 7059

D - Counting Stars HDU - 7059 题解: 长度为n的序列a&#xff0c;有三个操作&#xff1a; 对某个区间进行询问对于某个区间内的每个数ai&#xff0c;减去ai&(-ai)对于某个区间内的每个数ai&#xff0c;加上2k2^k2k,k满足2k<ai<2k12^k < a_{i} <2^{k1}2k<…

为什么我们要做单元测试?(二)

引子当我第一篇博客发布&#xff0c;并被张善友老师的公众号转载之后&#xff0c;在公众号文章和博客园的留言中&#xff0c;许多开发者纷纷表示&#xff0c;单元测试作为企业行为&#xff0c;与实施的技术栈不同&#xff0c;不是开发者个人行为&#xff0c;实施单元测试花费的…

[CF1368E] Ski Accidents(神仙结论构造)

problem CF1368E Ski Accidents solution 这个 47n\frac 47n74​n 的限制&#xff0c;提示这存在一个特定构造方案&#xff0c;由 777 我们联想到 124712471247。 暗示把顶点分为三类 A,B,CA,B,CA,B,C&#xff0c;满足 ∣C∣≤2∣B∣≤4∣A∣|C|\le 2|B|\le 4|A|∣C∣≤2∣…

P4159 [SCOI2009] 迷路

P4159 [SCOI2009] 迷路 题意&#xff1a; 该有向图有 n 个节点&#xff0c;节点从 1 至 nn 编号&#xff0c;windy 从节点 1 出发&#xff0c;他必须恰好在 t 时刻到达节点 n。 现在给出该有向图(带边权)&#xff0c;你能告诉 windy 总共有多少种不同的路径吗&#xff1f; …

程序员修神之路--提高网站的吞吐量

点击上方蓝色字体&#xff0c;关注我们菜菜哥&#xff0c;有个事你还得帮我呀呦西&#xff0c;YY妹子&#xff0c;最近天这么热了&#xff0c;你怎么还穿这么多&#xff1f;苦笑一下.....前几天写了几个接口&#xff0c;领导让提高一下接口吞吐量这是你技术提高的大好机会呀可吞…

P2151 [SDOI2009]HH去散步

P2151 [SDOI2009]HH去散步 题意&#xff1a; HH有个一成不变的习惯&#xff0c;喜欢饭后百步走。所谓百步走&#xff0c;就是散步&#xff0c;就是在一定的时间 内&#xff0c;走过一定的距离。 但是同时HH又是个喜欢变化的人&#xff0c;所以他不会立刻沿着刚刚走来的路走回…

Function Query(树状数组)

problem 给定一个长度为 nnn 的排列 aaa。有 qqq 个询问&#xff0c;每次询问一个区间 [l,r][l,r][l,r]。求这个区间的 kkk 值。 其中 k∑ilr∑ji1rf(ai,aj),f(x,y)k\sum_{il}^r\sum_{ji1}^rf(a_i,a_j),f(x,y)k∑ilr​∑ji1r​f(ai​,aj​),f(x,y) 为一个递归函数&#xff0c…

一份.NET 容器化的调查小结

小编在上个月在微信公众号“dotnet跨平台” 做了一个针对.NET 容器化的调查&#xff1a;.NET Core 容器化调查&#xff0c;参与人数702人&#xff0c;由于软件定义基础设施方兴未艾&#xff0c;编排和自动化领域kubernetes占据了主体地位&#xff0c;在平时的工作中和身边的同学…

P2148 [SDOI2009]ED

P2148 [SDOI2009]E&D 题意&#xff1a; 有2n堆石子&#xff0c;第2k-1堆和第2k堆是一组&#xff0c;现在两个人轮流操作&#xff0c;每次操作任选一组石子&#xff0c;然后将改组中的一堆石子移走&#xff0c;将另一堆式子分割成两堆&#xff0c;形成新的两堆石子&#x…

扒一扒.NET Core的环境配置提供程序

前言很久之前&#xff0c;在玩Docker的时候顺便扒了扒&#xff0c;最近&#xff0c;终于下定决心花了些时间整理并成文&#xff0c;希望能够给大家一些帮助。目录 .NET Core中的配置ASP.NET Core中的配置扒一扒环境变量提供程序为什么是“__”&#xff1f;“__”如何变成了“&…