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] ...
随机推荐
- 二、DBMS_JOB(用于安排和管理作业队列)
1.概述 作用:用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务注意:当使用DBMS_LOB管理作业时,必须确保设置了初始化参数job_queue_processes( ...
- 备注下Windows可能会用到的运行命令
因为有几个命令不常用忘记了,所以备注下Windows可能会用到的运行命令: 1.cleanmgr:打开磁盘清理工具2.compmgmt.msc:计算机管理3.charmap:启动字符映射表4.calc ...
- WiFi无线网络参数 802.11a/b/g/n 详解
转载自:WiFi无线网络参数 802.11a/b/g/n 详解 如转载侵犯您的版权,请联系:2378264731@qq.com 802.11a/b/g/n,其实指的是无线网络协议,细分为802.11a ...
- 开启 Android WebView 的安全浏览模式
Hybrid App(混合式开发)已经是每一个商业应用都会使用的开发手段.其最大的优势就是将一些可动态更新的内容页面使用 H5 开发,然后借用移动端原生系统提供的 WebView 控件加载进来.这种方 ...
- Amazon面试题
亚马逊面试题: 如下所示的Map中,0代表海水,1代表岛屿,其中每一个岛屿与其八领域的区间的小岛能相连组成岛屿群.写代码,统计Map中岛屿个数. /* Q1. Map [ 0 0 0 0 0 0 0 ...
- Python matplotlib 数据分布
利用plt.hist() import matplotlib.pylab as plt %matplotlib inline plt.figure(figsize=(21, 12)) plt.hist ...
- 利用sklearn的LabelEncoder对标签进行数字化编码
from sklearn.preprocessing import LabelEncoder def gen_label_encoder(): labels = ['BB', 'CC'] le = L ...
- Ubuntu下快速建立跨多个平台的cocos2d-x项目
原文:http://www.bennyxu.com/archives/462 这里之讲一点就是如何快速的建立起cocos2d-x项目,同时linux平台的优越性也充分的暴露无遗. 这里默认您已经成功的 ...
- 关于C++一些面试题目的总结
众所周知,在找工作时笔试题目往往对C++有大量考察,现在我们总结一些C++中比较重要而且可能会考到的知识. 1.判断一下A,B,C,D四个表达式是否正确. int a = 4: A:a += (a + ...
- Linux多电脑ssh免密码登录
Linux多电脑ssh免密码登录 1.这里拿三台虚拟机举例子.版本为:CentOS7 第一步:;开机,连接. 第二步:确定你的其中一台为主机.(生成公共的密匙). 第三步:目的:创建.ssh文件 命令 ...