【JZOJ 3870】单词检索

单词搜索器的C++实现 实现单词的搜索功能,利用MAP 和VECTOR和SET容器实现。能够实现单词的搜索功能。 立即下载

Description

小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。
由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。
现在他向你求助,需要你编写程序完成这项艰巨的任务。

Solution

这题显然可以字符串哈希,
用两个哈希,枚举每一个串,再枚举开头,先看一下这个子串在当前的整个串中是不是第一次出现,再把它的哈希值加1,相应的,判断一下这个哈希值出现的次数是否等于M,

为了保险,建议使用双哈希,

复杂度:O(nm)

Code

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <map>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long LL;
const int N=2200,mo=1e9+7,mo1=998244353;
const int moh=1564437;
int n,m,m1,ans;
int a[N][N/2];
int nx[N][N/2];
struct qqww{int a,b;};
int z[moh][3];
int Z[moh][2],z1[moh][2];
// map<int,qqww>z;
// map<int,int>z1,Z;
bool H1(int q,int w)
{
    int i=q%moh;
    while(Z[i][0]&&Z[i][0]!=q)i=(i+1)%moh;
    Z[i][0]=q;
    if(Z[i][1]<w){Z[i][1]=w;return 1;}
    return 0;
}
int H(int q)
{
    int i=q%moh;
    while(z[i][0]&&z[i][0]!=q)i=(i+1)%moh;
    return i;
}
int H2(int q)
{
    int i=q%moh;
    while(z1[i][0]&&z1[i][0]!=q)i=(i+1)%moh;
    return i;
}
int main()
{
    scanf("%d%d%d",&n,&m,&m1);
    fo(i,1,n)
    {
        char ch=' ';
        for(;ch>'z'||ch<'a';ch=getchar());
        for(;ch>='a'&&ch<='z';ch=getchar())a[i][++a[i][0]]=ch-96;
    }
    ans=0;
    LL q,w,q1,w1;
    LL qn=576923081,wn=729486258;
    int t;
    fo(I,1,n)
    {
        q1=w1=1;q=w=0;
        fo(i,1,m1-1)q=(q+(a[I][i]-1)*q1)%mo,w=(w+(a[I][i]-1)*w1)%mo1,q1=q1*26%mo,w1=w1*26%mo1;
        fo(i,m1,a[I][0])
        {
            q=(q+(a[I][i]-1)*q1)%mo,w=(w+(a[I][i]-1)*w1)%mo1;
            if(H1(q,I))
            {
                t=H(q);
                if(z[t][2]==w||z[t][2]==0)
                {
                    z[t][2]=w;
                    if((++z[t][1])==m)ans++;
                }else
                {
                    t=H2(w);
                    if((++z1[t][2])==m)ans++;
                }
            }
            q=(q-a[I][i-m1+1]+1)*qn%mo;
            w=(w-a[I][i-m1+1]+1)*wn%mo1;
        }
    }
    printf("%d\n",ans);
    return 0;
}
liquibase介绍 1、Liquibase还是Flyway Flyway和Liquibase都支持专业数据库重构和版本控制所需的所有功能,因此您将始终知道要处理的数据库模式的版本以及它是否与软件版本匹配。两种工具都集成在Maven或Gradle构建脚本中以及Spring Boot生态系统中,因此您可以完全自动化数据库重构。 Flyway使用SQL定义数据库更改,因此您可以定制SQL脚本,使其与基础数据库技术(例如Oracle或PostgreSQL)良好地配合使用。另一方面,使用Liquibase,您可以通过使用XML,YA 阅读详情

相关推荐

Win10下Altera USB-Blaster驱动安装详解:禁用数字签名与排查指南

在嵌入式开发和FPGA调试过程中,驱动安装是工程师绕不开的环节,尤其是当操作系统对驱动签名有严格限制时,硬件往往无法被正常识别。数字签名是系统验证驱动程序来源和完整性的重要机制,Win10出于安全考虑,默认拒绝加载未经签名的驱动,这正是Altera USB-Blaster下载器在设备管理器中显示未知设备或黄色感叹号的根本原因。通过理解设备管理器的排查逻辑,掌握临时禁用驱动强制签名或开启测试模式的方法,配合正确的驱动文件路径选择与手动安装操作,即可解决Quartus无法检测到下载器的问题。这一流程同样适用于许

weixin_29164497的博客 246

JZOJ3870 双HASH

题目就不说了。 早上打的时候随便XJBHASH了一发,结果不知道是什么原因错了一个点,懵比.jpg。 后来发现是冲突了,改了很多个质数都WA,没办法只能双hash不然搞不过去。。很久没打双hash不会打,结果被人嘲讽一波,心情复杂。#include<algorithm> #include<cmath> #include<cstring> #include<cstdio> #include<cst

老臣 459

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5722

【模板】字符串哈希 (【JZOJ3870】单词检索(search))

DescriptionDescriptionDescription 小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可 NNN 篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这 NNN 篇文章中的 MMM 篇文章里出现过,且单词长度为 LLL 。可是,工作量十分庞大,但校长又急需小可可完成...

夕弦 551

LaTeX伪代码字体大小调整全攻略:从algorithm到algorithm2e的实战技巧

本文详细介绍了在LaTeX中调整伪代码字体大小的全面技巧,涵盖algorithm、algorithmicx和algorithm2e等主流算法包的使用方法。从基础命令到高级配置,帮助用户解决学术论文和技术文档中的伪代码排版问题,提升算法展示的专业性和可读性。特别针对不同期刊格式要求,提供了实用的字体调整方案。

weixin_29297127的博客 437

英飞凌 AURIX Development Studio工程移植到Hightec的方法

1. 软件简介 AURIX™ Development Studio是英飞凌针对AURIX TC2XX/TC3XX系列单片机推出了一款免费的软件,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 Hightec是一款可以用来开发Aurix系列单片机的编译器,有免费版,可商用,集成GCC编译器,可用UDE

weixin_42967006的博客 7137

JZOJ 3870. 【NOIP2014八校联考第4场第1试10.19】单词检索(search)

Description小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。Input第1行3

Felix-Lee的博客 566

【Linux内核】Linux内核裁剪完全指南:从理论到实战的系统优化

在嵌入式设备、专用服务器和物联网系统日益普及的今天,如何让Linux系统在资源受限的环境中高效运行成为开发者必须面对的问题。Linux内核裁剪正是解决这一问题的关键技术,它通过移除不必要的内核组件,打造出更精简、更安全、更高效的自定义操作系统。本文将系统全面地介绍Linux内核裁剪的完整流程和实用技巧,帮助您掌握这一核心技能。Linux内核裁剪是一项结合技术知识与实践经验的系统工程。明确需求:裁剪前必须清晰了解目标系统的硬件配置和功能需求。循序渐进:采取小步修改、反复测试的策略,避免一次性大幅修改。

撬动未来的支点的专栏 1389

JZOJ 3845. 【NOIP2014八校联考第1场第1试9.20】简单题

题目 dzy 手上有一张n 个点m 条边的联通无向图,仙人掌是一张每条边最多在一个简单环内的联通无向图。他想求这个无向图的生成仙人掌中最多有多少条边。 但是dzy 觉得这个问题太简单了,于是他定义了“美丽的生成仙人掌”,即在一个生成仙人掌中如果满足对于任意编号为i,j(i 他现在想要知道这张图的美丽的生成仙人掌中最多有多少条边,你能帮帮他吗? 对于100% 的数据,n 题解 对于

Luckfort 337

PCL 欧式聚类分割【2026最新版】

PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。

点云侠的博客 40万+

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1976

【jzoj3870】【单词检索】【后缀数组】

题目大意由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。现在他向你求助,需要你编写程序完成这项艰巨的任务。解题思路题解是hash。我使用的是sa。考虑把所有的串并在一起,中间用没出现过的符号分隔。按heig

inklutcuah’s blog 349

详解vit_base_patch16_224

ViT-Base模型的核心思想是将输入图像划分为多个小块(patches),并使用Transformer架构来处理这些小块。具体来说,ViT-Base使用16x16像素的patch大小,输入图像的尺寸为224x224像素,这意味着每张图像将被划分为49个patch(22416×22416=14×14=19616224​×16224​=14×14=196个patch)。ViT-Base(ViT-B/16)通过将图像处理任务转化为序列处理任务。

具身机器人和通用AI 3227

【JZOJ 3870】 单词检索

Description小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。对于100%的数据

LYD729 470

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JZOJ3870 [NOIP2014八校联考第4场第1试10.19] 单词检索

Description 小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。 Input 第1...

Phantom的博客 318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JZOJ3870. 【NOIP2014八校联考第4场第1试10.19】单词检索(search)

Description小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。题解很显然,每一个

lijf2001的博客 563

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【JZOJ3870】【NOIP2014八校联考第4场第1试10.19】单词检索(search)

Description小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。Data Cons

dance in th dark的博客 742

【JZOJ 3427】归途与征程

Solution 题意简化以后就是:在b串的同构中,有多少个可以按顺序匹配多个串。 我们可以先把a串拆开,每个做一遍KMP的预处理, 倍长b串,枚举b串的开头,依次匹配过去, 每次匹配的时候,记录一下上一次匹配失败的位置,直接从上次匹配失败的地方开始匹配;成功是也记录一下,判断一下

1300

【GDOI 2016 Day1】第二题 最长公共子串

抽象题意:给出两字符串S,T,求经过一些奇怪的操作后的最长公共子串 Solution 很显然一些有交集的区间是可以合并的, 一个区间内我们只需要记录每个字母的个数, 我们就可以枚举两个字符串的相对位置,然后在重叠的部分用指针维护, 设区间i,j是合法的, 我们现在把j往后移一位,j所在的区间的字母$T_j$个数就-1, 然后把再移动指针i去使其合法,i所在的区间的$T_i$个数就+1,并且i++;直到合法或移爆

1123

【NOIP2015模拟11.2】复制&粘贴2

Description文本编辑器的一个最重要的机能就是复制&粘贴。JOI社现在正在开发一款能够非常高速地进行复制&粘贴的文本编辑器,作为JOI社一名优秀的程序猿,你担负起了复制&粘贴功能的测试这一核心工作。整个JOI社的命运都系在你的身上,因此你无论如何都想写出一个正确且高速的程序来完成这项工作。 具体的做法如下所示。文件的内容是一个字符串S,对其进行N(N<=2*10^5)次复制&粘贴的操作,第

829

【GDOI2016模拟3.9】暴走的图灵机

Description solution显然,这是一个像斐波拉契数列的东西,问题变成了求这个序列操作(n-1)次后与T的最大匹配, KMP自己学 当我们“左手右手一个慢动作”搞出两个长度大于m的串(设为A串和B串),这是我们来模拟一下A,B串之后的变化: A B AB BAB ABBAB BABABBAB ……. 我们又发现:因为A,B串的长度是大于m的

807

【JZOJ 4624】字符串匹配

Description Solution 很显然的KMP嘛, 把T串加长,然后把n求个余数然后除一下,再倍长后做几遍KMP即可, 复杂度:O(n)O(n)

736

【GDOI 2017】【JZOJ 1502】小学生语文题

Description给出一个原始串和目标串,要求在原始串上不停的把后面的字符移动到前面去,用最少的步数使两串相同。 n<=2000n<=2000Solution用DP:fi,jf_{i,j}表示目标串匹配到了i,原始串匹配到了j, 那么当前有两种选择: 1. 如果两位置字符相同,则直接匹配; 2. 当前这位的目标串然后面的来匹配,先跳过; 3. 当前这位的原始串去匹配前面跳过的目标串(当

662

【JZOJ 5220】【GDOI2018模拟7.10】C

Description设A、B两字符串的最长公共公共前缀长度为L,那么在A串所有长度为L的子串中,有多少个同时是B的子串。Solution把题目改成:“A、B串中所有长度为L的子串,有多少个是两两相同的”,那么这个直接用求最长公共子串的DP加上统计方案数即可,注意细节;那么这题怎么做呢? 设i,j,k,保证ai=aj,ai=ak,j<ka_i=a_j,a_i=a_k,j<k这三个条件 那么有结论

550

【JZOJ 5272】神奇的重复序列

DescriptionSolution枚举两字符串的开头,暴力往后扫大家应该会做吧, 设两字符串开头为x,y(x<y)x,y(x<y),设k=y−xk=y-x 我们发现,如果对于多个位置,如果它在所在串的相对位置%k是相同的,那么这几个位都必须相同, 比如:两串的开头为1、3,k=2,那么,1、3、5、7等都必须相等, 换句话说,就是在两串相交时,会有一定的周期性, (大家写两个数据看看就

497

【AtCoder】【ARC077F】SS

Description 给出对于字符串的函数F(x),表示在字符串后面加至少一个字符,使得新串由两个一样的字符串组成,如:f(aaabbb)=aaabbbaaabbb 求对原串进行了无限次f()后的串,从第l位到第r位,每个字母出现了对少次 保证原串是由两个相同的串组成。 Solution 设原串为SS,由两个字符串S组成, 考虑第一次变化: 肯定是找出最短的T,使得T是S最短的...

482
上一篇: 【JZOJ 3853】帮助Bsny
下一篇: 【JZOJ 3871】无聊的游戏
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值