jzoj3189-解密【字符串hash】

正题


题目大意

一个句子有多个单词。
给出了一个加密了的串。加密方法是将不同的单词转换成不同的单词。然后再给一个加密前的串,求再加密串中可能出现的最早位置。


解题思路

aia_iai表示与iii相同的前一个字母的位置。
然后根据题目意思对与两个串如果aaa序列一样那么就是可以转换的加密串。所以我们可以用字符串hashhashhash进行匹配。


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
const ll XJQ=1000000007;
const ll HZB=10007;
const ll p1=9999991;
const ll p2=1000007;
const ll N=1000001;
ll hash1[N],hash2[N],a[N],b[N];
ll len1,len,s,ans;
char c[N];
map<ll,ll> f;
void pre_work(){hash1[0]=hash2[0]=1;for(ll i=1;i<N;i++){hash1[i]=hash1[i-1]*p1%XJQ;hash2[i]=hash2[i-1]*p2%XJQ;}
}
ll work_in(){ll len,s=0,s1=0;len=strlen(c);for(ll i=0;i<len;i++){s=(s*26+c[i]-'a')%XJQ;s1=(s1*26+c[i]-'a')%HZB;}return s+s1*XJQ;
}
void init(){scanf(" %s",c);while(c[0]!='$'){ll x=work_in();a[++len1]=f[x];b[a[len1]]=len1;f[x]=len1;scanf(" %s",c);}scanf(" %s",c);f.clear();while(c[0]!='$'){ll x=work_in();ll z=f[x];++len;s=(s*p2)%XJQ;if(z)(s+=hash1[len-z])%=XJQ;f[x]=len;scanf(" %s",c);}
}
void work(){for(ll i=1;i<=len;i++){ans=(ans*p2)%XJQ;if(a[i])(ans+=hash1[i-a[i]])%=XJQ;}if(ans==s){printf("1");return;}ll l=0;for(ll i=len+1;i<=len1;i++){l++;if(b[l]&&b[l]<i)(ans-=hash1[b[l]-l]*hash2[i-b[l]-1]%XJQ-XJQ)%=XJQ;ans=(ans*p2)%XJQ;if(a[i]&&a[i]>l)(ans+=hash1[i-a[i]])%=XJQ;if(l==29767)l++,l--;if(ans==s){printf("%lld",l+1);return;}}printf("0");
}
int main()
{freopen("data.in","r",stdin);pre_work();init();work();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试请不要再问我Spring Cloud底层原理

转载自 面试请不要再问我Spring Cloud底层原理 概述 毫无疑问&#xff0c;Spring Cloud是目前微服务架构领域的翘楚&#xff0c;无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面&#xff0c;其底层的很多原理&#xff0c;很多人可能并…

nginx配置前端反向代理

本地这里有两个端口&#xff1a; 8080&#xff1a;前端页面 80&#xff1a;后端接口 在nginx配置 listen 8888;server_name 127.0.0.1;location / {root html;proxy_pass http://127.0.0.1:8080;# try_files $uri $uri/ /index.php$is_args$args;index index.html…

Visual Studio 2017的第五个更新包扩展了调试工具

Visual Studio 2017近日收到了最新的完整更新包&#xff0c;版本号为15.5。跟随前几次更新的步伐&#xff0c;这次发布提供了一系列几乎会让所有用户从中受益的特性。此次发布的一个重点是IDE的性能&#xff0c;尤其是减少C#/Visual Basic项目的加载时间。在.NET Core项目中进行…

Spring Boot 多数据源(读写分离)入门

转载自 芋道 Spring Boot 多数据源&#xff08;读写分离&#xff09;入门 1. 概述 在项目中&#xff0c;我们可能会碰到需要多数据源的场景。例如说&#xff1a; 读写分离&#xff1a;数据库主节点压力比较大&#xff0c;需要增加从节点提供读操作&#xff0c;以减少压力。 …

欢乐纪中A组周六赛【2019.3.30】

前言 做A组被虐好惨 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1010102017ZYC2017ZYC2017ZYC1141141142424244040405050501313132017XXY2017XXY2017XXY1001001000001001001000001818182017HJQ2017HJQ2017HJQ95959500095959500022…

参加双车项目的一些感触

已经十月尾旬了&#xff0c;再过两天就是11月份了&#xff0c;这个月我过的很不好&#xff0c;或者说很煎熬吧&#xff01;&#xff01;&#xff01; 国庆节之后就一直参加一个双车的项目&#xff0c;由于我对硬件算是一窍不通&#xff0c;学这个很吃力&#xff0c;相比于另一…

深港澳大湾区第三次.NET技术交流会圆满成功

2017年12月10日&#xff0c;一场以云、devops、微服务、容器是现在这个发展阶段的软件形态&#xff0c; 本次活动我们围绕这些话题介绍.NET生态下的发展本地社区活动&#xff0c;这次活动还得到如鹏网杨中科老师的大力支持开通网上直播&#xff0c;网上有229位参与活动&#xf…

P2101-命运石之门的选择【dp,离散化】

前言 我切掉这道题是命运石之门的选择 正题 题目链接:https://www.luogu.org/problemnew/show/P2101 题目大意 nnn个连在一起的高度hih_ihi​盒子。一个刷子只能直着刷而且得连续都得刷。求至少刷多少次。 解题思路 fi,jf_{i,j}fi,j​表示前iii个已经刷完了&#xff0c;上一个…

基于消息中间件RabbitMQ实现简单的RPC服务

转载自 基于消息中间件RabbitMQ实现简单的RPC服务 RPC(Remote Procedure Call,远程过程调用)&#xff0c;是一种计算机通信协议。对于两台机器而言&#xff0c;就是A服务器上的应用程序调用B服务器上的函数或者方法&#xff0c;由于不在同一个内存空间或机器上运行&#xff0c…

laravel关闭crsf

在中间件VerifyCsrfToken.php 加入 自己想要关闭的crsf protected $except [user/*,article/*,article,api/*,];

开源纯C#工控网关+组态软件(七)数据采集与归档

一、 引子在当前自动化、信息化、智能化的时代背景下&#xff0c;数据的作用日渐凸显。而工业发展到如今&#xff0c;科技含量和自动化水平均显著提高&#xff0c;但对数据的采集、利用才开始起步。对工业企业而言&#xff0c;数据采集日益受到重视&#xff0c;主要应用场景包…

nssl1167-桐人的约会【最短路】

正题 题目大意 去掉一条边使得最短路最长。 解题思路 这条边一定在最短路上而最短路最多只有n−1n-1n−1条边&#xff0c;所以直接枚举最短路上的边。复杂度O(nmK)O(nmK)O(nmK) codecodecode #include<cstdio> #include<algorithm> #include<queue> #incl…

实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例

转载自 实践出真知之Spring Cloud之基于Eureka、Ribbon、Feign的真实案例 Eureka是Spring Cloud Eureka的简称&#xff0c;是Netflix提供的组件之一。通过Eureka可以提供服务注册、发现、负载均衡、降级、熔断等功能。本篇主要介绍Eureka作为服务注册中心&#xff0c;以及实现…

从零开发一个laravel项目的增删改查、详情

环境要求&#xff1a; wampcomposer 创建laravel项目&#xff1a; composer create-project --prefer-dist laravel/laravel person快速完成person注册登录开发 1、migration php artisan make:migration create_people_table$table->increments(id);$table->string…

使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用

本文翻译自Scott Hanselman博客&#xff1a;https://www.hanselman.com/blog/WritingSmarterCrossplatformNETCoreAppsWithTheAPIAnalyzerAndWindowsCompatibilityPack.aspx正文&#xff1a;这是最近这几周你应该知道的一对.Net Core界的优秀工具。我们在编写或者移植跨平台代码…

P4562-[JXOI2018]游戏【数论,组合数学】

正题 题目链接:https://www.luogu.org/problemnew/show/P4562 题目大意 l∼rl\sim rl∼r的变化&#xff0c;每次访问第iii个那么iii的倍数就不用访问了。对于一个顺序sss&#xff0c;定义t(s)t(s)t(s)表示按这个顺序访问玩前t(s)t(s)t(s)个就都不用访问了。求所有顺序的t(s)t(…

Redis RDB文件格式全解析

转载自 Redis RDB文件格式全解析 点评 这篇文章作为对RDB理解的教程文章&#xff0c;对RDB文件的原理理解有助于进行Redis高阶应用的设计与开发。 文章转自&#xff1a;http://blog.nosqlfan.com/html/3734.html 作者&#xff1a;nosqlfan RDB文件是Redis持久化的一种方式…

实验进行中:.NET WebAssembly支持

目前四大主流浏览器都默认支持WebAssembly&#xff0c;而.NET社区也在继续推动为.NET开发者提供相关能力&#xff0c;来将他们的代码编译成WebAssembly&#xff0c;然后在浏览器上运行。WebAssembly是一种二进制web格式&#xff0c;旨在以接近原生的性能运行不是用JavaScript语…

Js对象如何添加方法、查看Api

js万物皆对象&#xff0c;要带着观察对象的眼观去看待每一个函数、变量。 为什么要用到原型&#xff1f; Es6以前&#xff0c;js中没有如ooa编程当中的class&#xff0c;但是要用到类&#xff0c;怎么办呢&#xff0c;构造函数就应运而生&#xff0c;但是构造函数里面添加方法…

Java web文件下载断点续传

一、下载文件请求 RequestMapping(value "/file/download")ResponseBodypublic Res download(HttpServletRequest request, HttpServletResponse response) {File file new File(request.getParameter("fileName"));if (file.exists()) {String range …