/*
手打的哈希+线性的维护
第一问:hash一下 并且用个h记录某个单词要背的
第二问:线性的跑一边
开始队列里装下前一些单词使这一坨符合要求 并且记录出现次数num
然后开始从前面删
删除的条件:要么是非法的单词(h值为0)
要么num值大于1
如果删不了就在进来一个 更新num
直到跑完 这过程中每次更新l
注意这样有极端数据 如果第一问答案为 0 需要特判一下
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define maxm 100100
#define maxn 100010
#define mod 100007
#define p 17
using namespace std;
char s[maxn][],ss[maxn][];
int n,m,f[maxn],a[maxm],ans,l=maxn;
int h[maxn],num[maxn],vis[maxn],head,tail;
int get_hash(char *str)
{
int len=strlen(str),hash=;
for(int i=;i<=len-;i++)
hash=(hash*p+str[i]-'a')%mod;
return hash;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%s",s[i]);
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%s",ss[i]);
f[get_hash(ss[i])]=;
}
for(int i=;i<=n;i++)
{
int tmp=get_hash(s[i]);
if(f[tmp]==)
{
ans++;
h[tmp]=;
}
}
int si=;
head++;
while(tail<=m)
{
int tmp=get_hash(ss[++tail]);
if(h[tmp])
{
if(vis[tmp]==)
si++;
num[tmp]++;
vis[tmp]=;
}
if(si==ans&&si!=)
{
int x=get_hash(ss[head]);
while(head<tail&&(h[x]==||num[x]>))
{
if(h[x])
num[x]--;
x=get_hash(ss[++head]);
}
l=min(l,tail-head+);
}
}
if(ans)printf("%d\n%d\n",ans,l);
else printf("0\n0");
}

codevs3013单词背诵的更多相关文章

  1. CODEVS3013 单词背诵 【Hash】【MAP】

    CODEVS3013 单词背诵 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要 ...

  2. 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0

    作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...

  3. 洛谷 P1381 单词背诵 解题报告

    P1381 单词背诵 题目描述 灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...

  4. 洛谷 P1381 单词背诵

    洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...

  5. codevs 3013 单词背诵 hash

    题目链接 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一 ...

  6. [codeVS1204] 单词背诵

    题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个).并且在背诵的单词量尽量多的情 ...

  7. CODEVS——T 3013 单词背诵

    http://codevs.cn/problem/3013/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 De ...

  8. Luogu-1381 单词背诵

    先将n个单词插入哈希表,记录左右端点,每次右端点往后移动,读入一个新的单词并记录下它的哈希值,如果这个单词之前没出现过那么更新\(ans\)和\(minl\),如果左端点的单词出现了不止一次则可以往右 ...

  9. 洛谷 - P1381 - 单词背诵 - 哈希 - 尺取

    https://www.luogu.org/problemnew/show/P1381 字符串匹配,用哈希总没有错的. 然后就是尺取了,题目要求首先尽可能多覆盖,那么每次尾巴往后面长. 一开始先找到第 ...

随机推荐

  1. Tornado的一个开源社区

    https://link.zhihu.com/?target=http%3A//www.tornadoweb.org/en/stable/ 基于Tornado的一个开源社区 GitHub - shiy ...

  2. 转:Win7 IIS7应用PHP Manager使用FastCGI通道快速部署PHP支持

    原文来自于:http://www.jb51.net/os/windows/62390.html 正常情况下,我们在Windows系统中部署WEB服务器(iis)支持PHP是采用ISAPI通道.参照这篇 ...

  3. IE8一枝独秀的JS兼容BUG

    // 例如淡入淡出的封装类文件 function ImagesEff(div,time){ this.arr=[];//装载所有div this.time=time; this.recordOld=n ...

  4. ajax异步请求不能刷新数据的问题

    搞了两三天的问题,今天解决了.总结下: function reportGrpChange(cuid, title){ document.getElementById('reportFrameDiv') ...

  5. 可重入与线程安全(大多数Qt类是可重入,非线程安全的)

    可重入与线程安全 在Qt文档中,术语“可重入”与“线程安全”被用来说明一个函数如何用于多线程程序.假如一个类的任何函数在此类的多个不同的实例上,可以被多个线程同时调用,那么这个类被称为是“可重入”的. ...

  6. 追踪CM_CONTROLCHANGE消息的产生和执行过程,可以较好的领会VCL的思想(就是到处通知,但耦合性很弱)

    追踪CM_CONTROLCHANGE消息的流向,可以较好的 测试代码: procedure TForm1.Button1Click(Sender: TObject);var Image2 : TIma ...

  7. 12.HTML编辑器(CKEditor、CKFinder集成)

    CKEditor原名为FckEditor,是著名的HTML编辑器,可以在线编辑HTML内容. 配置参考文档:主要将ckeditor中的lang.plugins.skins.ckeditor.js.co ...

  8. XFS文件系统功能解析

    XFS文件系统是作为一个日志文件系统开发,采用B-树平衡树算法来尽快地分配数据.主要的设计目的之一是支持大型文件和大型文件系统.当前,能够支持的最大文件大小是2艾字节,最大文件系统大小为8艾字节. X ...

  9. (转载)PHP strtotime函数详解

    (转载)http://www.jb51.net/article/21495.htm strtotime函数是一个很好的函数,灵活的运用它,会给你的工作带来不少方便.但PHP的手册中却对此函数的参数没作 ...

  10. arcgis数据文件使用

    dem数据打开,保存,使用 打开