别人家的神选系列。Day2根本不能做QAQ

题目描述:给定两个字符串集合,一个长度为n,另一个为m,求有多少个数字对i,j,满足xi+yj能由一个(n+m)/2的字符串旋转拼接而成

我们枚举长度较长的集合,那么我们的那个(n+m)/2的字符串就能确定了,接下来我们就可以对y的字符串hash掉然后枚举断点就能o(1)判断啦

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<map>
 6 using namespace std;
 7 #define p 17
 8 #define maxn 8000010
 9 typedef unsigned int uint;
10 map<uint,int> hash,used;
11 uint pow[maxn],c[maxn];
12 string a[maxn],b[maxn];
13 char ch[maxn];
14 inline uint get(int l,int r){return c[r]-c[l-1]*pow[r-l+1];}
15 int main(){
16     int s,t,n,m;
17     scanf("%d%d%d%d",&s,&t,&n,&m);
18     int l=(n+m)>>1;
19     for (int i=1;i<=s;i++) {scanf("%s",ch);a[i]=string(ch);}
20     for (int i=1;i<=t;i++) {scanf("%s",ch);b[i]=string(ch);}
21     if (n<m) {
22         for (int i=1;i<=max(s,t);i++) swap(a[i],b[i]);
23         swap(s,t);
24         swap(n,m);
25     }
26     for (int i=1;i<=t;i++) {
27         uint h=0;
28         for (int j=0;j<m;j++) h=h*p+b[i][j]-'a';
29         hash[h]++;
30     }
31     int ans=0;
32     pow[0]=c[0]=1;
33     for (int i=1;i<=n+m;i++) pow[i]=pow[i-1]*p;
34     for (int i=1;i<=s;i++) {
35         used.clear();
36         for (int j=0;j<n;j++) c[j+1]=c[j]*p+a[i][j]-'a';
37         for (int j=1;j<=l;j++) {
38             uint h=get(j,l)*pow[j-1]+get(1,j-1);
39             if (used[h]) continue;
40             used[h]=1;
41             ans+=hash[h-get(l+1,n)*pow[m]];
42         }
43     }
44     printf("%d\n",ans);
45     return 0;
46 }        

转载于:https://www.cnblogs.com/New-Godess/p/4587077.html

BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)相关推荐

  1. BZOJ 3990: [SDOI2015]排序(搜索+剪枝)

    [SDOI2015]排序 Description 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1< ...

  2. YOLOv4:目标检测(windows和Linux下Darknet 版本)实施

    YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and L ...

  3. R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合

    R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录

  4. R语言KMeans聚类分析确定最优聚类簇数实战:NbClust包(确定最优聚类簇数)

    R语言KMeans聚类分析确定最优聚类簇数实战:NbClust包(确定最优聚类簇数) 目录

  5. R语言KMeans聚类分析确定最优聚类簇数实战:Calinski-Harabasz准则(确定最优聚类簇数)

    R语言KMeans聚类分析确定最优聚类簇数实战:Calinski-Harabasz准则(确定最优聚类簇数) 目录

  6. python自动化办公:文件篇(自动整理文件,一键完成)

    文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 用到的库os Python os.path() 模块 详解 附算例 os.walk()用法 ...

  7. 《神经网络:回到未来》(Neural Nets Back to the Future)-ICML 2016

    <神经网络:回到未来>(Neural Nets Back to the Future) 官方主页:Neural Nets Back to the Future @ ICML 16 June ...

  8. layui表格使用:经验总结(含案例、代码、截图)

    文章目录 layui表格使用:经验总结(含案例.代码.截图) 一.原生table案例 1.1. 原生table案例 · 效果截图: 1.2. 原生table案例 · 代码示下: 二.案例转化:layu ...

  9. phpcmsV9 邮箱注册:邮箱验证(不改代码、含演示截图) - 配置篇

    phpcmsV9 邮箱注册:邮箱验证(不改代码.含演示截图) - 全程指导 方法一.(网传) · 配置教程 第一步:修改登陆的验证JS 第二步: 修改登录文件 方法二.真机实操 · 教程 [推荐] 1 ...

  10. 【未完成】【甄选靶场】Vulnhub百个项目渗透——项目四十一:DEFCON Toronto-Galahad(图像深层分析,流量分析)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目四十一:DEFCON Toronto-Galahad(图像深层分析,流量分析)

最新文章

  1. python 归一化_只需 45 秒,Python 给故宫画一组手绘图!
  2. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一1.1 生成执行计划
  3. 机器学习算法常用指标总结
  4. linux awk 用一个或多个空格做分隔符
  5. 机器学习:样本集、验证集(开发集)、测试集
  6. MySQL初识-架构-安装-初始化-连接-管理工具-数据文件
  7. DataBaseMetaData 从数据库中读取关于数据库属性
  8. dataframe修改数据_利用Python进行数据分析(语法篇)
  9. java J2EE 分层设计思想及各个文件命名规范
  10. GNURadio For Windows编译安装脚本v1.1.1发布
  11. svg 转换为 pdf (batik 库+fop库)
  12. html调用js里面的函数,html如何调用js函数
  13. This Product is covered by one or more of the folloWing patents
  14. C#进阶之路(四):拉姆达
  15. 泊松过程2 | 泊松过程扩展
  16. 基础知识(HTML + CSS)整理
  17. python过滤_在纯Python中映射,过滤和减少
  18. 经典书籍《征服市场的人》阅读心得
  19. 【PHP】PHP与Web界面交互
  20. Python中的re.search和re.group用法

热门文章

  1. 没有com.sun.tools.javac.main的解决办法
  2. C调用系统命令ping崩溃日志
  3. 苹果手机关于推送的查看LOG的一种解决办法
  4. python中tab的用法_详解Python中expandtabs()方法的使用
  5. c++ 函数指针和指针函数
  6. mysql扩展函数创建临时表_MySQL函数中创建临时表
  7. 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
  8. glibc升级_Linux关于glibc等基本知识整理
  9. php fpm mysql 长链接_PHP Mysql数据库 长链接 短链接 (连接池 ?)
  10. IBatis.Net学习笔记三--两种常用的DAO