hdu-1711(hash)
题意:给你T组数据,每组数据分别输入n,m和长度为n的数字数组,和长度为m的数字数组,问你长度为m的数组第一次出现在长度为n的数组的位置
解题思路:标准字符串匹配问题,一般用kmp解,拿来练hash
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long ll;
const ll mod=1e9+;
const ll p=;
const int M=1e6+;
const int N=1e4+;
ll h[M];
ll a[N],b[M];
ll lena,lenb,t,n,m;
ll pp[N];
ll juage(ll l,ll r)
{
ll tmp=(h[r]-(h[l-]*pp[r-l+])%mod)%mod;
while(tmp<)
tmp+=mod;
return tmp;
}
int main()
{
cin>>t;
while(t--)
{
memset(h,,sizeof(h));
cin>>m>>n;
ll ans=;
pp[]=;
for(int i=;i<=n;i++)
pp[i]=(pp[i-]*p)%mod;
for(int i=;i<=m;i++)
{
cin>>b[i];b[i]+=;
h[i]=(h[i-]*p+b[i])%mod;
}
for(int i=;i<=n;i++)
{
cin>>a[i];a[i]+=;
ans=(ans*p+a[i])%mod;
}
int sc=-;
for(int i=;i<=m;i++)
{
if((i+n-)>m)
break;
else
{
// cout<<i<<" "<<i+n-1<<" "<<juage(i,i+n-1)<<endl;
if(juage(i,i+n-)==ans)
{
sc=i;break;
}
}
}
cout<<sc<<endl;
}
}
hdu-1711(hash)的更多相关文章
- HDU 1711(KMP)字符串匹配
链接 HDU 1711 Number Sequence KMP 算法 我以自己理解写的,写的不对,不明白的地方海王子出来,一起共同学习: 字符串匹配 就是KMP,一般思想,用一个for循环找开头 ...
- Number Sequence HDU 1711(KMP)
http://acm.hdu.edu.cn/showproblem.php?pid=1711 首次接触KMP,自己都不是特别理解.在网上百度看了好几个帖子之后,对KMP也有了初步的理解. #inclu ...
- hdu 5183(hash)
传送门:Negative and Positive (NP) 题意:给定一个数组(a0,a1,a2,⋯an−1)和一个整数K, 请来判断一下是否存在二元组(i,j)(0≤i≤j<n)使得 NP− ...
- hdu 1029(hash)
传送门:Ignatius and the Princess IV 题意:给n个数,找出出现次数大于等于(n+1)/2的那个数. 分析:大水题,排个序输出中间那个即可,这里随便写个HASHMAP找出次数 ...
- 哈希(Hash)与加密(Encrypt)相关内容
1.哈希(Hash)与加密(Encrypt)的区别 哈希(Hash)是将目标文本转换成具有相同长度的.不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的.可 ...
- 数据结构之哈希(hash)表
最近看PHP数组底层结构,用到了哈希表,所以还是老老实实回去看结构,在这里去总结一下. 1.哈希表的定义 这里先说一下哈希(hash)表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过 ...
- redis学习-散列表常用命令(hash)
redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...
- 【Redis】命令学习笔记——哈希(hash)(15个超全字典版)
本篇基于redis 4.0.11版本,学习哈希(hash)相关命令. hash 是一个string类型的field和value的映射表,特别适合用于存储对象. 序号 命令 描述 实例 返回 HSET ...
- A * B Problem Plus HDU - 1402 (FFT)
A * B Problem Plus HDU - 1402 (FFT) Calculate A * B. InputEach line will contain two integers A and ...
- 《数据结构与算法分析——C语言描述》ADT实现(NO.05) : 散列(Hash)
散列(Hash)是一种以常数复杂度实现查找功能的数据结构.它将一个关键词Key,通过某种映射(哈希函数)转化成索引值直接定位到相应位置. 实现散列有两个关键,一是哈希函数的选择,二是冲突的处理. 对于 ...
随机推荐
- 4.4管道和中间件介绍「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道流 我们知道一个管道可以有一个或多个中间件,而中间件的职责是根据HttpContext处理HTTP请求,然后往 ...
- 从PRISM开始学WPF(二)Prism-更新至Prism7.1
0x1 PRISM? PRISM项目地址:https://github.com/PrismLibrary/Prism 先看下简介: Prism is a framework for building ...
- Office组件无法正常使用的解决方法
问题与现象 开发时调用Office组件,代码编译是通过的,但在运行时当ApplicationClass对象初始化后程序出现异常. 异常信息如下: 无法将类型为“Microsof ...
- Android Studio教程11-RecycleView的使用
目录 1. RecyclerView 1.1. Add support library 1.2. 将RecyclerView添加到布局 1.3. 主actiivty中如何调用recycleview对象 ...
- 查看apk签名 和 keystore 的信息
原文出处:https://www.jianshu.com/p/90b698002215 1.keytool -printcert -file ***(把apk文件下的META- INF文件夹解压出来, ...
- coreRT 和 Native 编译netcore AOT程序
AOT是预编译成本地程序,避免JIT动态编译存在的性能问题. netcore一个吸引人的项目,就是基于coreRt 运行时的本地编译技术,下面我来替大家尝试一下它究竟表现如何. <Project ...
- struct导入项目工程时工程旁边出现红色的×号
在我们学习java的过程中难免要导入java工程项目,那么当我们导进去的时候出现错误怎么办呢, 一,首先 二,其次 选择Properties 三,再选择 四,再选择 (高版本的选择1.5尽量用1.6的 ...
- nexus 10 救砖 安装lineage OS 15 并 root
因为平板自带的谷歌应用太烦人了,想root之后卸载它们. 一.root nexus 10 官方系统 1.把img拷贝到platform-tools(Android官网下载)文件夹 2.platform ...
- Codeception 实战
Codeception 测试 Php 代码 一.一句话概述 使用 cc 进行单元测试,保证现有代码质量,为以后维护与重构提供支撑. 二.目标 安装配置 cc 编写测试代码,简化开发与最大化稳定性和可维 ...
- Redis报错 Server started, Redis version 3.2.13 Can't handle RDB format version 9 Fatal error loading the DB: Invalid argument. Exiting.
在/usr/local/etc 目录下 运行 redis-server 命令重启 redis 服务发现报错,报错信息如下: 如上报错的含义是:当前的redis的版本是3.2.13版本,无法处理 ver ...