博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4048 SDOI015 双旋转字符串 Hash
阅读量:4480 次
发布时间:2019-06-08

本文共 984 字,大约阅读时间需要 3 分钟。

题意:给定两个字符串集合S T,每个集合内的所有字符串长度均相同,求有多少对字符串<Si,Tj>使得两个字符串拼接后,左右两半满足双旋转性质(一个字符串按照任意一个位置旋转后与另一个字符串重合)

题解:把较小的集合Hash后,暴力枚举另一个集合内的字符串。

#include 
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define Base 233const int MAXN=4000000+2;int N,M,TS,TT;ll Hash,f[MAXN],p[MAXN],Ans;string S[MAXN],T[MAXN];map
m;ll Calc(int x,int y){ if(x>y) return 0; return f[y]-f[x-1]*p[y-x+1];}int main(){ cin >> TS >> TT >> N >> M; if(TS
> S[i]; for(int i=1;i<=TT;i++) cin >> T[i]; } else{ for(int i=1;i<=TS;i++) cin >> T[i]; for(int i=1;i<=TT;i++) cin >> S[i]; swap(N,M),swap(TS,TT); } p[0]=1; for(int i=1;i<=N+M;i++) p[i]=p[i-1]*Base; for(int i=1;i<=TS;i++){ for(int j=0;j
>1;i<=TT;i++,Hash=0){ for(int j=0;j<2*Mid;j++) f[j+1]=f[j]*Base+T[i][j%Mid]-'a'+1; for(int j=Mid;j
View Code

 

转载于:https://www.cnblogs.com/WDZRMPCBIT/p/6616597.html

你可能感兴趣的文章
zkw线段树
查看>>
asp.net中导出Excel的方法
查看>>
[转]跟紧时代,让你的设计更加popular
查看>>
作业1226
查看>>
mainline.js主线
查看>>
fseek()
查看>>
Python学习笔记——PyQt控件中文字居中显示
查看>>
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
查看>>
Beta阶段敏捷冲刺前准备
查看>>
mini web框架-3-替换模板
查看>>
Siamese Network简介
查看>>
第六节 MongoDB 状态监控、备份复制及自动分片
查看>>
svg学习(三)rect
查看>>
博客园博文生成章节目录
查看>>
ruby 模块 的引入
查看>>
CI Weekly #21 | iOS 持续集成快速入门指南
查看>>
xml 校验
查看>>
Jquery获取输入框属性file,ajax传输后端,下载图片
查看>>
深入浅出Visual_C动态链接库(Dll)编程(宋宝华)----整理(word)
查看>>
docker运行环境安装-后续步骤(二)
查看>>