3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 4293  Solved: 2083 [Submit][Status][Discuss] Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词由小写字母组成,N<=200,单词长度不超过10^…
P3966 [TJOI2013]单词 题目链接:https://www.luogu.org/problemnew/show/P3966 题目描述 小张最近在忙毕设,所以一直在读论文.一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次. 输入输出格式 输入格式: 第一行一个整数N,表示有N个单词.接下来N行每行一个单词,每个单词都由小写字母(a-z)组成.(N≤200) 输出格式: 输出N个整数,第i行的数表示第i个单词在文章中出现了多少次.…
题目描述 小张最近在忙毕设,所以一直在读论文.一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次. 输入输出格式 输入格式: 第一行一个整数N,表示有N个单词.接下来N行每行一个单词,每个单词都由小写字母(a-z)组成.(N≤200) 输出格式: 输出N个整数,第i行的数表示第i个单词在文章中出现了多少次. 输入输出样例 输入样例#1: 复制 3 a aa aaa 输出样例#1: 复制 6 3 1 说明 数据范围 30%的数据, 单词总长度不…
题目大意:有$n$个字符串,求每个字符串在所有字符串中出现的次数 题解:$AC$自动机,每个节点被经过时$sz$加一,每一个字符串出现次数为其$fail$树子树$sz$和 卡点:$AC$自动机根节点为$1$,没有在$build$的时候将所有空的$nxt[1][i]$赋值为$1$ C++ Code: #include <cstdio> #include <algorithm> #include <iostream> #include <queue> const…
题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词(每个单词内包含大小写字母).现在他想要找出某一段连续的单词内字典序最大的单词. 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示单词个数和询问个数. 接下来N行每行包含一个字符串,仅包含大小写字母,长度不超过15,表示一个单词. 再接下来M行每行包含两个整数x.y,表示求从第x到第y…
题目大意: 一篇论文是由许多单词组成,现在想知道每个单词分别在论文中出现多少次. 题解: 我们首先考虑fail指针的含义 如果fail[x] = y,那么我们就知道y作为x的后缀在x中出现了一次 所以对于一般串的来说fail[x]都会在x中出现 那么我们就有siz[fail[x]] += siz[x] 其中siz表示该串在文章中出现的次数(初始值为1) #include <cstdio> #include <cstring> #include <algorithm> u…
传送门 统计单词出现次数……为啥大家都是写AC自动机的嘞……明明后缀自动机也能做的说…… 统计出现次数这个就直接按长度排序然后做个dp就好,这是SAM的板子的要求啊,不提了 然后考虑怎么让所有串之间隔开.本来打算建个广义SAM后来发现没办法处理子串重复的情况……然后就按题解里的方法在每两个串之间加入一个新字符然后直接对整个串建好了 //minamoto #include<iostream> #include<cstdio> #include<cstring> using…
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将以x为根节点的子树内所有节点值都加上z 操作4: 格式: 4 x 表示求以x为根节点的子树内所有节点值之和 输入输出格式 输入格式: 第一行包含4个正整数N.M.R.P,…
洛谷p3384 [模板]树链剖分错误记录 首先感谢\(lfd\)在课上调了出来\(Orz\) \(1\).以后少写全局变量 \(2\).线段树递归的时候最好把左右区间一起传 \(3\).写\(dfs\)的时候不要写错名字 \(4\).使用线段树的操作的时候才要用到\(dfs\)序 \(5\).需要开一个数组来记录在\(dfs\)序下的节点是什么也方便线段树的赋值 \(6\).注意\(down\)函数内怎样更新 \(7\).在查询的时候并不需要向上更新 由于\(yxj\)看了\(lfd\)敲的树链…
题目大意:求一篇论文中每个单词分别在论文中出现多少次. 本题用AC自动机太慢,应该用Fail树将AC自动机中所有的Fail指针反向得到一个新树,这就是Fail树.对长度为x的字符串a和长度为y的字符串b,如果a是b的子串,则a可能与位于b[0,a],b[0,a+1],b[0,a+2]...b[0,y]中的后缀相等.根据fail指针的定义,只要沿着反向Fail边走,走到的节点所代表的字符串必然存在与a(前缀)相等的后缀.因此,一遍DFS,返回加上子节点的总Cnt值的当前节点的Cnt值,即可.注意,…