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)判断啦
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define p 17
#define maxn 8000010
typedef unsigned int uint;
map<uint,int> hash,used;
uint pow[maxn],c[maxn];
string a[maxn],b[maxn];
char ch[maxn];
inline uint get(int l,int r){return c[r]-c[l-]*pow[r-l+];}
int main(){
int s,t,n,m;
scanf("%d%d%d%d",&s,&t,&n,&m);
int l=(n+m)>>;
for (int i=;i<=s;i++) {scanf("%s",ch);a[i]=string(ch);}
for (int i=;i<=t;i++) {scanf("%s",ch);b[i]=string(ch);}
if (n<m) {
for (int i=;i<=max(s,t);i++) swap(a[i],b[i]);
swap(s,t);
swap(n,m);
}
for (int i=;i<=t;i++) {
uint h=;
for (int j=;j<m;j++) h=h*p+b[i][j]-'a';
hash[h]++;
}
int ans=;
pow[]=c[]=;
for (int i=;i<=n+m;i++) pow[i]=pow[i-]*p;
for (int i=;i<=s;i++) {
used.clear();
for (int j=;j<n;j++) c[j+]=c[j]*p+a[i][j]-'a';
for (int j=;j<=l;j++) {
uint h=get(j,l)*pow[j-]+get(,j-);
if (used[h]) continue;
used[h]=;
ans+=hash[h-get(l+,n)*pow[m]];
}
}
printf("%d\n",ans);
return ;
}
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< ...
- BZOJ 3876:支线剧情(有下界最小费用最大流)
3876: [Ahoi2014]支线剧情 Description [故事背景]宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧 ...
- YOLOv4:目标检测(windows和Linux下Darknet 版本)实施
YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and L ...
- SQL基础教程(第2版)第7章 集合运算:7-2 联结(以列为单位对表进行联结)
第7章 集合运算:7-2 联结(以列为单位对表进行联结) ■联结的特定语法和过时语法 ● 联结( JOIN)就是将其他表中的列添加过来,进行“添加列”的集合运算.UNION是以行(纵向)为单位进行操作 ...
- BZOJ 1855: [Scoi2010]股票交易(DP+单调队列)
1855: [Scoi2010]股票交易 Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未 ...
- BZOJ 3289 Mato的文件管理(莫队+离散化求逆序数)
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 2171 Solved: 891 [Submit][Status][ ...
- C#:实现托盘(任务栏图标与托盘图标互斥)
实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...
- 题目1023:EXCEL排序(多关键字+快排+尚未解决)
http://ac.jobdu.com/problem.php?pid=1023 题目描述: Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例,首先输出1行“Ca ...
- MySQL锁和事务(一):InnoDB锁(MySQL 官方文档粗翻)
// 写在前面,实际上,数据库加锁的类型和范围受到多种因素的影响,例如数据库隔离等级,SQL语句,是否使用主键.索引等等.可以查看博文: http://www.cnblogs.com/zhaoyl/p ...
随机推荐
- AFNetworing进行POST上传 分类: ios技术 2015-04-01 17:03 73人阅读 评论(0) 收藏
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //申明返回的结果是json类型 m ...
- java实现gbdt
DATA类 import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import ...
- leetcode day4
[171]Excel Sheet Column Number Given a column title as appear in an Excel sheet, return its correspo ...
- Java编译时出现No enclosing instance of type XXX is accessible.
今天在编译Java程序的时候出现以下错误: No enclosing instance of type Main is accessible. Must qualify the allocation ...
- Nodejs之模板ejs
ejs使用说明及介绍. 1.创建ejs项目 express -e test //创建模板为ejs的项目,默认为jade. 2.使用 app.js中添加 var ejs = require('ejs' ...
- Java 之 Spring加载(Java之负基础实战)
1.下载后解压 2.在WEB-INF里面创建lib文件夹 3.拖入jar包 只拖入*.RELEASE.jar包
- CSS中设置margin:0 auto; 水平居中无效的原因分析
很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题,margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应,其 ...
- --@angularJS--$scope.watch监听模型变化
$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...
- 添加Action View
ActionBar上除了可以显示普通的Action Item之外,还可以显示普通的UI组件.为了在ActionBar上添加ActionView,可以使用如下两种方式. 定义ActionItem时使用a ...
- MySQL生产库开发规范
MySQL开发规范 文件状态: [ ] 草稿 [√] 正式发布 [ ] 正在修改 文件标识: 当前版本: V1.0 作 者: 贺磊 完成日期: 2016-05-24 变更记录 序号 ...