ybtoj 单词频率

2024-01-30 03:58
文章标签 单词 频率 ybtoj

本文主要是介绍ybtoj 单词频率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

YBToj AC 自动机第二题 单词频率
在这里插入图片描述
*

题目分析

首先便是先把AC自动机模板先敲一遍,因为满足无后效性,所以可以逆BFS序进行类似于递推的操作,因为在插入trie的过程中储存了每个匹配串的最后一个字母,所以可以由此进行多重匹配,保证答案的准确性

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define N 1100001
using namespace std;
int n,trie[N][26],tot=1,s[N][2],las[201],nxt[N],que[N];
char w[N];
void ins(int num)
{int r=1,x,len=strlen(w+1);for(int i=1;i<=len;i++){x=w[i]-'a';if(!trie[r][x]) trie[r][x]=++tot;r=trie[r][x];s[r][0]++;}las[num]=r;return;
}
void bfs()
{for(int i=0;i<26;i++) trie[0][i]=1;que[1]=1,nxt[1]=0;int q1=1,q2=1,r;for(;q1<=q2;q1++){r=que[q1];for(int i=0;i<26;i++){if(!trie[r][i]) trie[r][i]=trie[nxt[r]][i];else que[++q2]=trie[r][i],nxt[trie[r][i]]=trie[nxt[r]][i];}}for(int i=1;i<=tot;i++) s[que[i]][1]=s[que[i]][0];for(int i=tot;i>0;i--) s[nxt[que[i]]][1]+=s[que[i]][1];return;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%s",w+1),ins(i);bfs();for(int i=1;i<=n;i++) printf("%d\n",s[las[i]][1]);return 0;	
} 
```AC自动机 例2

这篇关于ybtoj 单词频率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659041

相关文章

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

动态规划---单词拆分

题目: 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路:本题属于完全背包问题,字符串s的长度为背包容量,字符串列表wordDict中的每一个元素相当于物品。 动态规划五部曲: 1.确定dp数组及含义 dp数组为元素类型是布

WPS如何查看已添加到词典的单词

WPS Office(12.1.0.17827) ① 点击文件,在文件中找到选项 ② 找到拼写检查并点击自定义词典 ③ 如果要删除已添加到词典的"错词",则点击修改 ④ 选择"错词", 点击删除

如何校准实验中振镜频率的漂移

在实验过程中,使用共振扫描振镜(如Cambridge Technology的8kHz振镜)时,频率漂移是一个常见问题,尤其是在温度变化或长期运行的情况下。为了确保实验的准确性和稳定性,我们需要采取有效的校准措施。本文将介绍如何监测、调节和校准振镜频率,以减少漂移对实验结果的影响。 1. 温度管理和稳定性控制 振镜的频率变化与温度密切相关,温度的升高会导致机械结构的变化,进而影响振镜的共

【C】单词长度

课程:程序设计入门——C语言(翁恺) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。 输入格式: 输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。 输出格式: 在一行中输出这行

代码随想录第八天|151.翻转字符串里的单词 卡码网:55.右旋转字符串 28. 实现 strStr() 459.重复的子字符串

反转字符串的单词 思路:刷过稍微忘记 class Solution {public://去除空格string remove(string s){//使用快慢指针int slow=0;int i=0;for(;i<s.size();i++){if(s[i]!=' '){if(slow!=0){s[slow++]=' ';}while(s[i]!=' '&&i<s.size()){s[slow+

实操在聆思CSK6大模型开发板的英文评测SDK中自定义添加单词、短语、句子资源

引言 英文评测示例通过对用户语音输入的英文单词进行精准识别,提供 单词、短语、句子 三种类型,用户在选择好类型后,可根据屏幕上的提示进行语音输入,评测算法将对输入的英文语音进行精准识别,并对单词的发音、错读、漏读、多读等方面进行评估。 本文将详细介绍在聆思CSK6大模型语音视觉开发板上,如何替换英文评测示例中的单词、短语和句子,从而让您有更好的AI应用体验。 ·· 获取英文评测SDK 部

我用ChatGPT编写一个英语猜单词游戏源码

一、背景 我们可以利用python中的tkinter框架创建一个简单的英语单词猜词游戏。用户将看到一个缺少几个字母的单词,并需要填写出正确的字母,填写正确后会提醒correct,错误则提示:try again. 本代码全程利用VScode中的ChatGPT插件来完成。 二、实现过程 步骤 1:导入必要的库 我们需要导入 tkinter 库来创建图形用户界面(GUI),还需要导入 rando

【算法】单词出现次数和位置统计

【算法】单词出现次数和位置统计 题目描述 编写一个程序,用于统计一个给定单词在一段文本中出现的次数以及第一次出现的位置。如果单词在文本中出现,则输出出现次数和第一次出现的位置(位置从0开始计算)。如果单词没有出现,则输出-1。 思路分析 使用Scanner类从控制台读取两个字符串:要搜索的文本str和要统计的单词substring。定义一个方法countStr,该方法接收两个字符串参数