/*
线段树 + hash:
首先我们可以知道A序列是1~n的排列,那么我们可以先在B序列中把1~n的排列找出来,看其相对位置是否与A相同(hash可做),相同即表明存在一个d满足条件。
以此类推,我们接下来可以把B中 2~ n + 1的排列找出来,如果其每位-1后相对顺序还是与A序列一致,即存在d-1也满足。。。
线段树中保存一个长度为n的序列的hash。具体看代码
*/
#include <bits/stdc++.h> using namespace std; #define lson l, m ,rt<<1
#define rson m + 1, r, rt <<1|1
const int maxn = 2e5 + ;
const int M = ;//hash底数
typedef long long ll;
int pw[maxn], s, h;
int n, m; int hash[maxn << ],sz[maxn << ];
void pushUp(int rt){
hash[rt] = hash[rt<<] * pw[sz[rt<<|]] + hash[rt<<|];
sz[rt] = sz[rt<<] + sz[rt<<|];
}
void update(int p, int val, int tag, int l, int r, int rt){
if (l == r){
hash[rt] += tag * val;
sz[rt] += tag;
return ;
}
int m = (l + r) >> ;
if (p <= m) update(p, val, tag, lson);
else update(p, val, tag, rson);
pushUp(rt);
}
int pos[maxn];
int main(){
int x;
while (~scanf("%d%d", &n, &m)){
pw[] = ;
h = s = ;
for (int i = ; i <= n; ++i){
scanf("%d", &x);
h = h * M + x;
pw[i] = pw[i - ] * M;//M的i次方
s += pw[i - ];//1 ~n的排列的hash转化成 2 ~ n + 1的hash需要+s.......自己算算
}
for (int i = ; i <= m; ++i){
scanf("%d", &x);
pos[x] = i;
}
memset(hash, , sizeof(hash));
memset(sz, , sizeof(sz));
int ans = ;
for (int i = ; i <= m; ++i){
update(pos[i], i, , , m, );
if (i >= n){
if ((hash[] - (s * (i - n)) == h))
ans++;
update(pos[i - n + ], i - n + , -, , m, );
}
}
printf("%d\n", ans);
}
return ;
}

最新文章

  1. react 写的省市三级联动
  2. 3ds max删除了对象后,还是将原来所有对象输出的原因
  3. css公共样式
  4. TCPdump抓包命令详解--摘
  5. JAVA输出图形(网上找的)
  6. POJ 3026 Borg Maze (最小生成树)
  7. 用CentOS 7打造合适的科研环境
  8. oracle看到用户的所有表名、表睐、字段名称、现场的目光、是空的、字段类型
  9. win10系统中如何解决cmd中的路径和现在电脑的用户名不一致
  10. Servlet(6)—HttpServletRequest接口和HttpServletResponse接口
  11. Maven教程1(介绍安装和配置)
  12. 如何使用swfobject(中文版)
  13. C++ AfxBeginThread和AfxEndThread 使用方法
  14. iCheck的全选和获取value
  15. create-react-app中img图片不现实
  16. 20155305乔磊2016-2017-2《Java程序设计》第七周学习总结
  17. ZT C语言链表操作(新增单向链表的逆序建立)
  18. 需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP
  19. Mac 10.12搭建OpenVPN服务器以及客户端的使用
  20. js &amp; right click menu &amp; 鼠标滑词

热门文章

  1. Android基础新手教程——4.1.3 Activity登堂入室
  2. DataGridView拖动到TreeView
  3. InputStream写文件出现大量NUL
  4. 基于React实现的【绿色版电子书阅读器】,支持离线下载
  5. hdu1010 dfs+路径剪枝
  6. java之生成jar包
  7. iOS开发-重写description方法,自定义控制台(log)信息
  8. Python 的条件语句和循环语句
  9. DMA (直接存储器访问)
  10. spring定时任务(@Scheduled注解)cron表达式详解