BZOJ 4084 [Sdoi2015]双旋转字符串
2024-08-27 20:00:39
题解:hash
至今不会unsigned long long 的输出
把B扔进map
找A[mid+1][lenA]在A[1][mid]中的位置
把A[1][mid]贴两遍(套路)
枚举A[mid+1][lenA]在A[1][mid]中出现的位置,把其他位置的hash值求出来,在map里查有多少符合的B串
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
const int maxn=8000009;
typedef unsigned long long uLint; int n,m,lenA,lenB,mid;
char s[maxn];
long long ans; int r;
uLint h[maxn];
uLint fac[maxn];
map<uLint,int>ma;
uLint a[maxn];
void Addstring(){
int cnt=0;
uLint midstring=0;
for(int i=mid+1;i<=lenA;++i)midstring=midstring*233+s[i]; for(int i=1;i<=mid;++i)s[i+mid]=s[i]; h[0]=0;
for(int i=1;i<=mid+mid;++i)h[i]=h[i-1]*233+s[i];
for(int i=1;i<=mid;++i){
uLint tm=h[i+r-1]-h[i-1]*fac[r];
if(tm!=midstring)continue;
a[++cnt]=h[i+mid-1]-h[i+r-1]*fac[mid-r];
}
sort(a+1,a+1+cnt);
cnt=unique(a+1,a+1+cnt)-a-1;
for(int i=1;i<=cnt;++i)ma[a[i]]++;
} int main(){
scanf("%d%d%d%d",&n,&m,&lenA,&lenB);
fac[0]=1;
for(int i=1;i<=lenA+lenA;++i)fac[i]=fac[i-1]*233;
mid=(lenA+lenB)>>1;
r=lenA-mid; while(n--){
scanf("%s",s+1);
Addstring();
}
while(m--){
scanf("%s",s+1);
uLint tm=0;
for(int i=1;i<=lenB;++i)tm=tm*233+s[i];
ans=ans+ma[tm];
}
cout<<ans<<endl;
return 0;
}
最新文章
- 服务器搭建多个tomcat服务器
- 【C++】pair
- Asp.net Core WebApi 全局异常类
- ARP侦查工具Netdiscover
- jQuery:balloon气泡提示插件
- android---APN切换
- [置顶] 斗地主算法的设计与实现--项目介绍&;如何定义和构造一张牌
- IIS开启伪静态后html静态页面无法访问的解决方法
- zendguard安装破解
- Matlab,Visio等生成的图片的字体嵌入问题解决方法
- thinkphp学习笔记8—命名空间
- Web 版 powerdesigner (Canvas) 技术分享
- 探索Windows命令行系列(3):命令行脚本基础
- HTML笔记05------AJAX
- JVM 类的生命周期、类加载器
- 前端ps实用小技巧
- 文件上传漏洞靶场:upload-labs安装及第一关教程
- 原生开发小程序 和 wepy 、 mpvue, Taro 对比
- Python3基础 list in/not in 判断一个变量是否在列表中存在
- bootstrap4相关文档
热门文章
- db.mybatis.config
- Java开发程序员必须要学会的linux命令总结
- mqtt已断开连接(32109)
- 内存寻址能力与CPU的位宽有关系吗?
- cf 762C. Two strings
- css快速浏览
- 操作系统类型&;操作系统结构&;现代操作系统基本特征
- 错误:selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
- 吴裕雄--天生自然C++语言学习笔记:C++ 数字
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-flag