考虑设计一个哈希函数 \(hash(x) = f(x) \times base^x\)。

其中 \(f(x)\) 表示 \(\sum_{j=1}^{i-1} [j <i]\)。

然后类似于滑动窗口计算区间哈希值,加入一个数就计算贡献,减去一个数就计算这个数产生了贡献,两个东西都可以树状数组维护,那么愉快做完了。

#include<bits/stdc++.h>
#define int unsigned long long
#define lowbit(x)(x&(-x))
using namespace std;
//f(x) 表示 x 前面小于 x 的数的数量
//hash(x) = 1331^(x)*f(x)
const int maxn = 1e6+114;
const int base = 1145141;
int tr[maxn][2],_pow[maxn];
void add(int x,int v,int type){
while(x<maxn){
tr[x][type]+=v;
x+=lowbit(x);
}
}
int pre(int x,int type){
int res=0;
while(x>0){
res+=tr[x][type];
x-=lowbit(x);
}
return res;
}
int a[maxn],b[maxn],n,m,s,val1,ans;
queue<int> q;
signed main(){
_pow[0]=1;
for(int i=1;i<maxn;i++) _pow[i]=_pow[i-1]*base;
cin>>n>>m>>s;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]++;
}
for(int i=1;i<=m;i++){
cin>>b[i];
b[i]++;
val1+=_pow[i]*pre(b[i]-1,0);
add(b[i],1,0);
}
for(int i=0;i<maxn;i++) tr[i][0]=tr[i][1]=0;
int val2=0,sum=0;
for(int i=1;i<=n;i++){
val2+=_pow[i]*pre(a[i]-1,0);
add(a[i],1,0);
add(a[i],_pow[i],1);
sum+=_pow[i];
if(i>m){
val2-=(sum-pre(a[i-m],1));
add(a[i-m],-1,0);
add(a[i-m],-_pow[i-m],1);
sum-=_pow[i-m];
}
if(i>=m){
if(val2==val1*_pow[i-m]){
q.push(i-m+1);
}
}
}
cout<<q.size()<<'\n';
while(q.size()>0){
cout<<q.front()<<'\n';
q.pop();
}
return 0;
}
/*
9 6 10
5 6 2 10 10 7 3 2 9
1 4 4 3 2 1
*/

感觉最多评绿吧,再高就恶评了(逃。

BZOJ 1461 题解的更多相关文章

  1. BZOJ 1461: 字符串的匹配

    Description 同上题. Sol KMP+树状数组. 写这题的时候我灰常naive...不管了...直接贴代码... Code /******************************* ...

  2. BZOJ 3732 题解

    3732: Network Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ...

  3. bzoj 2669 题解(状压dp+搜索+容斥原理)

    这题太难了...看了30篇题解才整明白到底咋回事... 核心思想:状压dp+搜索+容斥 首先我们分析一下,对于一个4*7的棋盘,低点的个数至多只有8个(可以数一数) 这样的话,我们可以进行一个状压,把 ...

  4. bzoj一句话题解

    发现好多人都在搞这个...本人也想来试试(Solved刚到70就搞这个靠不靠谱啊喂).会更新的.嗯. 1000-1029 1000 A+B problem (这个还需要一句话吗?). 1001 狼抓兔 ...

  5. BZOJ 一句话题解

    菜鸡刷题记录 [题号:题解] 1008:简单排列组合 #include <bits/stdc++.h> using namespace std; #define ll long long ...

  6. BZOJ 4868-4873 题解

    BZOJ4868 每个结束位置的最优值很显然具有单调性,三分,再讨论一下就好了. #include<bits/stdc++.h> using namespace std; #define ...

  7. Meet in the middle算法总结 (附模板及SPOJ ABCDEF、BZOJ4800、POJ 1186、BZOJ 2679 题解)

    目录 Meet in the Middle 总结 1.算法模型 1.1 Meet in the Middle算法的适用范围 1.2Meet in the Middle的基本思想 1.3Meet in ...

  8. 洛谷3067 BZOJ 2679题解(折半搜索)

    传送门 BZOJ传送门(权限题) 看到n小于20,就可以想到搜索 所有的数要么在集合a中,要么在集合b中,要么都不在 可是3^n复杂度会炸,我们考虑优化 可以利用折半搜索,将前面一半的所有可能情况与后 ...

  9. BZOJ 2048 题解

    2048: [2009国家集训队]书堆 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1076  Solved: 499[Submit][Status ...

  10. BZOJ 1034 题解

    1034: [ZJOI2008]泡泡堂BNB Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2613  Solved: 1334[Submit][St ...

随机推荐

  1. 【原创】不同RTOS POSIX接口的实现差异

    目录 前言 POSIX简介 RTOS对POSIX的实现情况 Zephyr FreeRTOS RTOS提供的POSIX接口实时吗? nanosleep Timer-不同linux版本和xenomai的实 ...

  2. Mysql8.0在windows系统安装一直卡在Starting the server的解决方案

    报错:Beginning configuration step: Starting Server Attempting to start service MySQL80 一直卡在这里,手动启动服务也起 ...

  3. Kettle下载和安装

    一.Kettle简介 Kettle 是 PDI 以前的名称,PDI 的全称是Pentaho Data Integeration,Kettle 本意是水壶的意思,表达了数据流的含义.Kettle是一款国 ...

  4. grads读取netcdf文件,报错SDF file has no discernable X coordinate解决办法

    1.netcdf文件格式说明 netCDF数据格式在气象中有广泛的应用,这种格式有一定的复杂性.作为数据的使用者可以不用对数据格式了解得很详细,不过大致的了解还是有必要的.netCDF是自描述的二进制 ...

  5. Chart.js (v2.9.4) 2-主要的函数和对象介绍

    Color() :主要负责渲染图表时候,针对颜色处理相关函数 helpers_core:工具对象,提供了基础的工具函数功能,遍历数组,扩展对象,合并对象,克隆对象等等. core_defaults:负 ...

  6. 根据raft协议动画总结raft协议的特点

    raft动画地址 1. 1事务提交的时候如果已经被一台follower(A)获取到了,此时leader(L)挂掉,然后其它follower跟A一起选举leader基本上都是A会被选举成功,然后不管1事 ...

  7. RTMP推流与B帧的关系

    一.H264数据结构 一个原始的H.264 NALU 由一个接一个的 NALU 组成的,而它的功能分为两层,VCL(视频编码层)和 NAL(网络提取层). VCL:包括核心压缩引擎和块,宏块和片的语法 ...

  8. Windows平台git clone文件路径太长报错

    问题描述 在Windows下拉取一些比较大的开源项目经常会提示文件路径太长(filename too long),然后死活都不成功 解决办法 1.配置git git config --system c ...

  9. js 留言板(带删除功能)

    本文所用的知识点:创建节点和添加节点 创建节点:document.createElement('li') 添加节点  node(父亲节点).appendChild(child)    child:子节 ...

  10. 算法金 | 10 大必知的自动化机器学习库(Python)

    大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 一.入门级自动化机器学习库 1.1 Auto-Sklearn 简介: Auto-Skl ...