bzoj1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
Description
Input
Output
维护第一个串在每个长度为K的区间内对应位置的排名的hash,与第二个串的排名的hash比较
具体可以用树状数组维护小于指定数的数的个数和大于指定数的数对hash值的贡献,详见代码
#include<cstdio>
typedef unsigned long long u64;
int n,k,s;
int t1[],t2[],a[],b[],as[],ap=;
u64 pp[],h2=,h1=,F[],fs=;
const u64 p=;
void add(int*f,int w,int v){
for(;w<=s;w+=w&-w)f[w]+=v;
}
int sum(int*f,int w){
int v=;
for(;w;w-=w&-w)v+=f[w];
return v;
}
void add(int w,u64 v){
fs+=v;
for(;w<=s;w+=w&-w)F[w]+=v;
}
u64 sum(int w){
u64 v=;
for(;w;w-=w&-w)v+=F[w];
return fs-v;
}
char buf[*],*ptr=buf-;
int _(){
int x=,c=*++ptr;
while(c<)c=*++ptr;
while(c>)x=x*+c-,c=*++ptr;
return x;
}
int main(){
fread(buf,,sizeof(buf),stdin);
n=_();k=_();s=_();
pp[]=;
for(int i=;i<=n;++i)pp[i]=pp[i-]*p;
for(int i=;i<=n;++i)a[i]=_();
for(int i=;i<=k;++i)b[i]=_();
for(int i=;i<=k;++i){
add(t1,a[i],);
add(a[i],pp[i]);
add(t2,b[i],);
}
for(int i=;i<=k;++i){
h1+=pp[i]*sum(t1,a[i]-);
h2+=pp[i]*sum(t2,b[i]-);
}
if(h1==h2)as[ap++]=;
for(int i=k+,j;i<=n;++i){
j=i-k;
h1-=pp[j]*sum(t1,a[j]-);
h1-=sum(a[j]);
add(t1,a[j],-);
add(a[j],-pp[j]);
h1+=sum(a[i]);
h1+=pp[i]*sum(t1,a[i]-);
add(t1,a[i],);
add(a[i],pp[i]);
if(h1==h2*pp[j])as[ap++]=j+;
}
printf("%d\n",ap);
for(int i=;i<ap;++i)printf("%d\n",as[i]);
return ;
}
bzoj1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配的更多相关文章
- BZOJ 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
Description 约翰的N(1≤N≤100000)只奶牛中出现了K(1≤K≤25000)只爱惹麻烦的坏蛋.奶牛们按一定的顺序排队的时候,这些坏蛋总会站在一起.为了找出这些坏蛋,约翰让他的奶牛排好 ...
- 【BZOJ1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚 动态规划
[BZOJ1672][Usaco2005 Dec]Cleaning Shifts Description Farmer John's cows, pampered since birth, have ...
- BZOJ1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 414 Solved: ...
- BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚
题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Description Farm ...
- [Usaco2005 Dec]Cleaning Shifts 清理牛棚 (DP优化/线段树)
[Usaco2005 Dec] Cleaning Shifts 清理牛棚 题目描述 Farmer John's cows, pampered since birth, have reached new ...
- 【BZOJ1731】[Usaco2005 dec]Layout 排队布局 差分约束
[BZOJ1731][Usaco2005 dec]Layout 排队布局 Description Like everyone else, cows like to stand close to the ...
- BZOJ1679: [Usaco2005 Jan]Moo Volume 牛的呼声
1679: [Usaco2005 Jan]Moo Volume 牛的呼声 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 723 Solved: 346[ ...
- BZOJ 1679: [Usaco2005 Jan]Moo Volume 牛的呼声( )
一开始直接 O( n² ) 暴力..结果就 A 了... USACO 数据是有多弱 = = 先sort , 然后自己再YY一下就能想出来...具体看code --------------------- ...
- 3893: [Usaco2014 Dec]Cow Jog
3893: [Usaco2014 Dec]Cow Jog Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 174 Solved: 87[Submit] ...
随机推荐
- CF 1A
题解: n/a*m/a 都要向上取整 代码: #include<cstdio> #include<cmath> #include<cstring> #include ...
- hdu 5818 Joint Stacks (优先队列)
Joint Stacks Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- vue单独给页面设置body属性
因项目需求:用户个人详细信息页面设置背景色,之前在这个页面设置最外层div发现不行.因为app.vue影响了它.后来直接在页面上用body设置样式,发现影响了其他页面. 后来想了通过vue的生命周期来 ...
- HTML5音视频播放(Video,Audio)和常见的坑处理
1. 前言背景 在HTML5出现之前,Web页面访问音视频主要是通过Flash,Activex插件,还有微软后来推出的silverlight来展现的,尽管FLASH曾经风靡全球,但是随着互联网的不断发 ...
- HashMap resize代码详解(二)
关于其中的resize方法如下: final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = ( ...
- C# POST请求 json格式
/* * url:POST请求地址,例如:url = "http://localhost:35229/ddn/GetPostData"; * postData:json格式的请求报 ...
- Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
这里也会遇到一次性关闭所有modal引起阴影遮罩的问题,也就是所有modal都关闭了,但是主页面仍然被阴影遮罩. 这个问题从哪来的,是因为modal叠加,我们点击窗口之外的空白部分,一次性关闭所有mo ...
- clean-css 安装 使用
https://github.com/jakubpawlowicz/clean-css-cli https://davidwalsh.name/clean-css
- (转) 从windows XP到10的微软官方操作系统虚拟机镜像,即下即用,不用安装
原文地址: https://blog.csdn.net/tool321_com/article/details/50707512 最近在帮朋友安装虚拟机,遇到了这么一个东西,感觉比较不错,分享如下: ...
- Ubuntu网络代理问题
问题描述 新开机的电脑,不开lantern就上不了网.很气. 解决过程 首先当然是寻求解决方案了.未果 然后就是妥协,每次先开一次lantern.(其实也不是很麻烦是吧,哎,是的是的) 今天早晨友人来 ...