codevs3013单词背诵
/*
手打的哈希+线性的维护
第一问: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单词背诵的更多相关文章
- CODEVS3013 单词背诵 【Hash】【MAP】
CODEVS3013 单词背诵 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要 ...
- 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0
作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...
- 洛谷 P1381 单词背诵 解题报告
P1381 单词背诵 题目描述 灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...
- 洛谷 P1381 单词背诵
洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...
- codevs 3013 单词背诵 hash
题目链接 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一 ...
- [codeVS1204] 单词背诵
题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个).并且在背诵的单词量尽量多的情 ...
- CODEVS——T 3013 单词背诵
http://codevs.cn/problem/3013/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
- Luogu-1381 单词背诵
先将n个单词插入哈希表,记录左右端点,每次右端点往后移动,读入一个新的单词并记录下它的哈希值,如果这个单词之前没出现过那么更新\(ans\)和\(minl\),如果左端点的单词出现了不止一次则可以往右 ...
- 洛谷 - P1381 - 单词背诵 - 哈希 - 尺取
https://www.luogu.org/problemnew/show/P1381 字符串匹配,用哈希总没有错的. 然后就是尺取了,题目要求首先尽可能多覆盖,那么每次尾巴往后面长. 一开始先找到第 ...
随机推荐
- MAC 开发工具
web开发编辑器 Espresso下载地址 密码: i9hr
- Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五)
Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五) 题记:关于SolrCloud的Recovery策略已经写了四篇了,这篇应该是系统介绍Recovery策略的最后一篇了 ...
- GNU FORK PTHREAD SIGNALS
Linux程序设计入门 - fork, pthread, and signals 在UNIX程序设计中,学会fork及signal的运用,算是相当基本的功夫. fork()及signal经常运用在da ...
- Json传递后台数据的问题
在后台我有两个类: public Class Person { private String name; private Address address;//一个自定义的类 //getter和sett ...
- Strust2的json插件
以下这段摘自网上: Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的ActionResultType .一旦为Action指定了该结果处理类型,JSON插件就会自动将Actio ...
- C#验证码使用
1.C#创建验证码 1.1 创建获取验证码页面(ValidateCode.aspx) <html xmlns="http://www.w3.org/1999/xhtml"&g ...
- 【POJ】2278 DNA Sequence
各种wa后,各种TLE.注意若AC非法,则ACT等一定非法.而且尽量少MOD. #include <iostream> #include <cstdio> #include & ...
- C#代码实现隐藏任务栏、开始菜单和禁用任务管理
一:截图,主要是调用系统接口和更改注册表实现功能 二:代码 using System; using System.Collections.Generic; using System.Linq; usi ...
- Merge into(oracle)
作用:使用一条sql语句进行insert或者update操作,如果存在就update,如果不存在就insert 语法: MERGE INTO table_name t1 USING (table|vi ...
- c#反序列化
C#序列化(转载) 2011-03-15 | 凯之风 | 转藏(2) 序列化有下列要求: A> 只序列化PUBLIC的成员变量和属性 B> 类必须有默认识构造函数 C> 如果 ...