问题描述

灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词。

文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了。

输入格式

第1行一个数n,接下来n行每行是一个长度不超过10的字符串,表示一个要背的单词。

接着是一个数m,然后是m行长度不超过10的字符串,每个表示文章中的一个单词。

输出格式

输出文件共2行。第1行为文章中最多包含的要背的单词数,第2行表示在文章中包含最多要背单词的最短的连续段的长度。

输入样例

3
hot
dog
milk
5
hot
dog
dog
milk
hot

输出样例

3
3

HINT

对于30%的数据 n<=50,m<=500;

对于60%的数据 n<=300,m<=5000;

对于100%的数据 n<=1000,m<=100000;

时间限制:1s

空间限制:128MB

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
using namespace std;
typedef unsigned long long uLL;
map<uLL,int>vis,Map;
map<int,uLL>b;
char a[12];
int gethash(string s)
{int len=s.length();uLL sum(0);for(int i=0;i<len;i++)sum=sum*131+s[i]-'a';return sum;
}
int main()
{
//    freopen("p386.in","r",stdin);
//    freopen("p386.out","w",stdout);int n,m,sum=0;cin>>n;for(int i=1;i<=n;i++){scanf("%s",a);Map[gethash(a)]=1;}scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%s",a);b[i]=gethash(a);if(  Map[b[i]] && !vis[b[i]] ){sum++;vis[b[i]]=1;}}printf("%d\n",sum);vis.clear();int l=0,r=1,ans(1<<30),sumx=0;while(r<=m){while(r<=m){if(!vis[b[r]] && Map[b[r]] ) sumx++;vis[b[r]]++;r++;if(sumx==sum) break;}while(l<r && ( !Map[b[l]] || vis[b[l]]>1 )){vis[  b[l] ]--;l++;}ans = min(ans,r-l);}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/hfang/p/11240072.html

单词背诵【CodeVS3013】 哈希相关推荐

  1. Spoken English-口语-单词背诵 3步法

    1 Spoken English-口语 英语的学习分为口语和书面,口语侧重于听说,而书面侧重于书写. 1.5 单词背诵 3步法 背单词最科学的方法就是用老外的思维去背单词,老外背单词的就是通过单词的发 ...

  2. 单词背诵 500 个考过二十次以上词汇

    单词背诵 500 个考过二十次以上词汇 above / beyond:  介词,后面接抽象而不是具体名词时表示 " 无法做到 " ,例如: "above comprehe ...

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

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

  4. 【洛谷P1381】单词背诵

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

  5. [codeVS1204] 单词背诵

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

  6. 程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)

    文章目录 1. 题目 2. 解题 2.1 哈希解法 2.2 Trie树 1. 题目 设计一个方法,找出任意指定单词在一本书中的出现频率. 你的实现应该支持如下操作: WordsFrequency(bo ...

  7. LeetCode 290. 单词规律(哈希)

    1. 题目 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之 ...

  8. leetcode 792 匹配子序列的单词数(哈希表+双指针)

    792. 匹配子序列的单词数 中等 282 相关企业 给定字符串 s 和字符串数组 words, 返回  words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符 ...

  9. 2023.4.24 考研单词背诵+默写

    陌生单词 5%认识的单词 savant n.博学之士,大文豪,大学者 culprit n.罪犯,犯罪的人 schism n.分裂,分立 daunt v.使气馁,使胆怯 salient 突出的,显著的, ...

最新文章

  1. 扩增子图表解读8网络图:节点OTU或类Venn比较
  2. 通俗理解Java中的Lambda表达式
  3. 2017.10.9 DZY Loves Math VI 失败总结
  4. 六级词汇打卡第一天(一)
  5. c语言5-34答案,C语言答案第5章.doc
  6. 利用EA根据sql脚本生成数据库文档
  7. ThinkPHP的介绍和安装
  8. session 分布式处理-----https://segmentfault.com/a/1190000013447750?utm_source=tag-newest
  9. ACCESS入门教程(五)数据的类型和属性
  10. 20135202闫佳歆——信息安全系统设计基础第七周学习总结
  11. 我不是蓝牙大神,但还是斗胆对蓝牙学习路线给点建议!
  12. EOS代码架构及分析(四)
  13. 地图上制作线路的动画_使用百度地图API制作线路轨迹播放
  14. stata在进行meta分析时出现command metabias is unrecognized,如何解决?
  15. 74hc165C语言程序,74hc165使用方法(74hc165功能_内部结构图_时序图)
  16. 74hc164驱动数码管c语言程序,74hc164应用电路图_74hc164驱动源程序
  17. android 手机信号软件增强方案
  18. 邻接矩阵/图/DFS/BFS
  19. Sql 双重否定的随笔
  20. 完全二叉树的节点个数

热门文章

  1. 超长的十六进制数转换为八进制
  2. ZCMU 1048: 子串
  3. 技术干货 | Native 页面下如何实现导航栏的定制化开发?
  4. AIoT五营连开惊喜活动上线!
  5. 友邦人寿引入阿里云PolarDB云数据库 支撑保险业务系统加速上云
  6. DataWorks搬站方案:Airflow作业迁移至DataWorks
  7. Flink SQL 在字节跳动的优化与实践
  8. 如何设计一个端计算架构?
  9. IOS 9人机界面指南(1):UI设计基础
  10. Android游戏开发中绘制游戏触摸轨迹的曲线图