BZOJ 4085:[Sdoi2015]bigyration(SDOI 2015 round 2 Day 1)
别人家的神选系列。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)相关推荐
- BZOJ 3990: [SDOI2015]排序(搜索+剪枝)
[SDOI2015]排序 Description 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1< ...
- YOLOv4:目标检测(windows和Linux下Darknet 版本)实施
YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and L ...
- R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix)、稠密数据(dense matrix)、xgb.DMatrix数据聚合
R语言构建xgboost模型:基于稀疏数据(dgCMatrix which is a sparse matrix).稠密数据(dense matrix) 目录
- R语言KMeans聚类分析确定最优聚类簇数实战:NbClust包(确定最优聚类簇数)
R语言KMeans聚类分析确定最优聚类簇数实战:NbClust包(确定最优聚类簇数) 目录
- R语言KMeans聚类分析确定最优聚类簇数实战:Calinski-Harabasz准则(确定最优聚类簇数)
R语言KMeans聚类分析确定最优聚类簇数实战:Calinski-Harabasz准则(确定最优聚类簇数) 目录
- python自动化办公:文件篇(自动整理文件,一键完成)
文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 用到的库os Python os.path() 模块 详解 附算例 os.walk()用法 ...
- 《神经网络:回到未来》(Neural Nets Back to the Future)-ICML 2016
<神经网络:回到未来>(Neural Nets Back to the Future) 官方主页:Neural Nets Back to the Future @ ICML 16 June ...
- layui表格使用:经验总结(含案例、代码、截图)
文章目录 layui表格使用:经验总结(含案例.代码.截图) 一.原生table案例 1.1. 原生table案例 · 效果截图: 1.2. 原生table案例 · 代码示下: 二.案例转化:layu ...
- phpcmsV9 邮箱注册:邮箱验证(不改代码、含演示截图) - 配置篇
phpcmsV9 邮箱注册:邮箱验证(不改代码.含演示截图) - 全程指导 方法一.(网传) · 配置教程 第一步:修改登陆的验证JS 第二步: 修改登录文件 方法二.真机实操 · 教程 [推荐] 1 ...
- 【未完成】【甄选靶场】Vulnhub百个项目渗透——项目四十一:DEFCON Toronto-Galahad(图像深层分析,流量分析)
Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目四十一:DEFCON Toronto-Galahad(图像深层分析,流量分析)
最新文章
- python 归一化_只需 45 秒,Python 给故宫画一组手绘图!
- 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一1.1 生成执行计划
- 机器学习算法常用指标总结
- linux awk 用一个或多个空格做分隔符
- 机器学习:样本集、验证集(开发集)、测试集
- MySQL初识-架构-安装-初始化-连接-管理工具-数据文件
- DataBaseMetaData 从数据库中读取关于数据库属性
- dataframe修改数据_利用Python进行数据分析(语法篇)
- java J2EE 分层设计思想及各个文件命名规范
- GNURadio For Windows编译安装脚本v1.1.1发布
- svg 转换为 pdf (batik 库+fop库)
- html调用js里面的函数,html如何调用js函数
- This Product is covered by one or more of the folloWing patents
- C#进阶之路(四):拉姆达
- 泊松过程2 | 泊松过程扩展
- 基础知识(HTML + CSS)整理
- python过滤_在纯Python中映射,过滤和减少
- 经典书籍《征服市场的人》阅读心得
- 【PHP】PHP与Web界面交互
- Python中的re.search和re.group用法
热门文章
- 没有com.sun.tools.javac.main的解决办法
- C调用系统命令ping崩溃日志
- 苹果手机关于推送的查看LOG的一种解决办法
- python中tab的用法_详解Python中expandtabs()方法的使用
- c++ 函数指针和指针函数
- mysql扩展函数创建临时表_MySQL函数中创建临时表
- 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
- glibc升级_Linux关于glibc等基本知识整理
- php fpm mysql 长链接_PHP Mysql数据库 长链接 短链接 (连接池 ?)
- IBatis.Net学习笔记三--两种常用的DAO