Luogu-1381 单词背诵
先将n个单词插入哈希表,记录左右端点,每次右端点往后移动,读入一个新的单词并记录下它的哈希值,如果这个单词之前没出现过那么更新\(ans\)和\(minl\),如果左端点的单词出现了不止一次则可以往右缩,从而保证长度最短。
#include<map>
#include<cmath>
#include<ctime>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline int read(){
	int ans=0,fh=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')
			fh=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
		ans=(ans<<1)+(ans<<3)+ch-'0',ch=getchar();
	return ans*fh;
}
typedef long long ll;
typedef unsigned long long ull;
const int maxn=1e5+100,maxm=1e3+100;
const ull base=131,P=1e6+3;
struct hash{
	int siz[P],cz[P];
	inline ull gethash(char *s){
		ull ans=0;
		for(int i=0,L=strlen(s);i<L;i++)
			ans=(ans*base+s[i])%P;
		return ans;
	}
//	inline void revise(char *s,int z){
//		ull x=gethash(s);
//		siz[x]+=z;
//	}
	inline void insert(char *s){
		ull x=gethash(s);
		cz[x]=1;
	}
//	inline int query(char *s){
//		ull x=gethash(x);
//		return siz[x];
//	}
	inline int find(char *s){
		ull x=gethash(s);
		if(!cz[x]) x=-1;
		return x;
	}
}h;
int n,a[maxn],m,ans,minl;
char s[maxm];
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%s",s),h.insert(s);
	scanf("%d",&m);
	int l=0;
	for(int i=1;i<=m;i++){
		scanf("%s",s);
		int x=h.find(s);
		a[i]=x;
		if(~x){
			if(h.siz[x]==0) ans++,minl=i-l;
			h.siz[x]++;
			while(a[l+1]==-1||h.siz[a[l+1]]>1)
				l++,h.siz[a[l]]--,minl=min(minl,i-l);
		}
	}
	printf("%d\n%d\n",ans,minl);
	return 0;
}
												
											Luogu-1381 单词背诵的更多相关文章
- 基于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\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...
 - CODEVS3013 单词背诵 【Hash】【MAP】
		
CODEVS3013 单词背诵 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要 ...
 - 洛谷 P1381 单词背诵
		
洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...
 - codevs 3013 单词背诵    hash
		
题目链接 题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一 ...
 - 洛谷 - P1381 - 单词背诵 - 哈希 - 尺取
		
https://www.luogu.org/problemnew/show/P1381 字符串匹配,用哈希总没有错的. 然后就是尺取了,题目要求首先尽可能多覆盖,那么每次尾巴往后面长. 一开始先找到第 ...
 - [codeVS1204] 单词背诵
		
题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个).并且在背诵的单词量尽量多的情 ...
 - CODEVS——T 3013 单词背诵
		
http://codevs.cn/problem/3013/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 De ...
 - codevs3013单词背诵
		
/* 手打的哈希+线性的维护 第一问:hash一下 并且用个h记录某个单词要背的 第二问:线性的跑一边 开始队列里装下前一些单词使这一坨符合要求 并且记录出现次数num 然后开始从前面删 删除的条件: ...
 - luogu p1101 单词方阵
		
https://www.luogu.org/problem/show?pid=1101 很恶心的代码 就是八个方向都搜索 #include<bits/stdc++.h> using na ...
 
随机推荐
- smarty、smarty格式化、smarty整数、smarty float、smarty各种转换方式、smarty日期转换等等 (转)
			
<? require("setup.php"); define('PAGETITLE','pagtitle'); function insert_top($lid,$sid) ...
 - windows下忘记mysql超级管理员rootpassword的解决的方法
			
今天帮一个朋友找回了MYSQL的超级管理员ROOTpassword.開始输入命令的时候少打了个"点"害的折腾了几个小时.最终攻克了,写个教程,方便以后使用! 假设你是server是 ...
 - LeetCode226 InvertBinaryTree  Java题解
			
题目: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 解答: 遍历每个节点 直接交换他们的 ...
 - 题目3 : Fibonacci
			
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given a sequence {an}, how many non-empty sub-sequence of it ...
 - hdu1535——Invitation Cards
			
Invitation Cards Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
 - 将普通用户添加至sudoers列表
			
编辑/etc/sudoers文件,在尾部添加如下内容: myusername ALL=(ALL) ALL myusername ALL=(ALL) NOPASSWD: ALL 其中需要将红色部分替换成 ...
 - Maven学习----dependencies与dependencyManagement的区别(转)
			
转自:http://blog.csdn.net/liutengteng130/article/details/46991829 1.DepencyManagement应用场景 当我们的项目模块很多的时 ...
 - JSP 表单处理向服务器提交信息
			
JSP 表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网址后面, ...
 - 多媒体开发之---h264格式slice_header
			
从Slice_Header学习H.264 写在前面: $ H.264我是结合标准和毕厚杰的书一块学的.看句法语义时最是头疼,一大堆的元素,很需要耐心.标准中在介绍某个元素的语义时,经常会突然冒 ...
 - 【python】-- SQLAlchemy操作MySQL
			
ORM.SQLAchemy orm英文全称object relational mapping,就是对象映射关系程序,简单来说就是类似python这种面向对象的程序来说一切皆对象,但是使用的数据库却都是 ...