bzoj 3207 花神的嘲讽计划Ⅰ 主席树+hash
花神的嘲讽计划Ⅰ
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 3112 Solved: 1086
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 2 3 4 5 6 7 8
2 5 2 3 4
1 8 3 2 1
5 7 4 5 6
2 5 1 2 3
1 7 3 4 5
Sample Output
Yes
Yes
Yes
No
HINT
Source
题解:
主席树吧,两棵线段树形式相同,满足前缀和的形式是主席树的基本操作
这道题k确定,这不就随便hash就可以瞎搞了。
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> #define ull unsigned ll
#define ll long long
#define inf 18446744073709551615UL
#define N 200007
#define MX 10000007
using namespace std;
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} int n,m,K,cnt;
int val[N],b[N],rt[N];
int sum[MX],a[MX][];
ull H[N]; void ins(int x,int &y,unsigned ll val)
{
y=++cnt;int tmp=y;
sum[y]=sum[x]+;
unsigned ll l=,r=inf,mid;
while(l!=r)
{
mid=l/+r/;
if((l&)&&(r&))mid++;
int t=;
if(val>mid)t=,l=mid+;
else r=mid-;
a[y][t]=++cnt;
a[y][t^]=a[x][t^];
x=a[x][t];y=a[y][t];sum[y]=sum[x]+;
}
y=tmp;
}
bool query(int x,int y,unsigned ll val)
{
unsigned ll l=,r=inf,mid;
while(l!=r)
{
mid=l/+r/;
if((l&)&&(r&))mid++;
int t=;
if(val>mid) t=,l=mid+;
else r=mid-;
x=a[x][t],y=a[y][t];
}
return (sum[y]-sum[x])!=;
}
int main()
{
n=read(),m=read(),K=read();
for(int i=;i<=n;i++)
val[i]=read();
for(int i=;i<=n;i++)
H[i]=H[i-]*+val[i];
unsigned ll M=;
for(int i=;i<=K;i++)M*=;
for(int i=K;i<=n;i++)
ins(rt[i-],rt[i],H[i]-H[i-K]*M);
while(m--)
{
int x=read(),y=read();
for(int i=;i<=K;i++)
b[i]=read();
unsigned ll now=;
for(int i=;i<=K;i++)
now=now*+b[i];
if(query(rt[x+K-],rt[y],now))puts("No");
else puts("Yes");
}
}
o( ̄ヘ ̄o#),hzw的代码。
bzoj 3207 花神的嘲讽计划Ⅰ 主席树+hash的更多相关文章
- BZOJ3207花神的嘲讽计划Ⅰ——主席树+hash
题目描述 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天DJ在给吾等众蒟 ...
- BZOJ 3207: 花神的嘲讽计划Ⅰ( hash + 可持久化线段树 )
O(NK)暴力搞出所有子串的哈希值, 然后就对哈希值离散化建权值线段树, 就是主席树的经典做法了.总时间复杂度O(NK+(N+Q)logN) ----------------------------- ...
- bzoj 3207 花神的嘲讽计划Ⅰ(哈希法+主席树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3207 [题意] 给定一个文本串,多次询问K长的模式串是否在文本[l,r]区间内出现. ...
- [BZOJ 3207] 花神的嘲讽计划Ⅰ【Hash + 可持久化线段树】
题目链接:BZOJ - 3207 题目分析 先使用Hash,把每个长度为 k 的序列转为一个整数,然后题目就转化为了询问某个区间内有没有整数 x . 这一步可以使用可持久化线段树来做,虽然感觉可以有更 ...
- [BZOJ3207] 花神的嘲讽计划Ⅰ (主席树)
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...
- bzoj 3207: 花神的嘲讽计划Ⅰ
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: "哎你傻不傻的![hqz:大笨J]" "这道题又被J屎过了!!" "J这程序 ...
- BZOJ 3207: 花神的嘲讽计划Ⅰ(莫队+哈希)
传送门 解题思路 刚开始写了个莫队+哈希+\(map\)的\(O(n\sqrt(n)log(n)\)的辣鸡做法,\(T\)飞了.后来看了看别人博客发现其实并不用拿\(map\)当桶存那些哈希值.因为只 ...
- BZOJ 3207 花神的嘲讽计划Ⅰ(函数式线段树)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3207 题意:给出一个数列,若干询问.每个询问查询[L,R]区间内是否存在某个长度为K的子 ...
- 【BZOJ】【3207】花神的嘲讽计划 I
字符串Hash+可持久化线段树 好神奇的转化…… 蒟蒻一开始还去想AC自动机去了……然而由于a[i]的范围是小于等于n,怎么也想不出一个时间复杂度合理的方法 膜拜了题解0.0原来是字符串Hash! 首 ...
随机推荐
- APPCLOUD禁止滚动条
- C#基础学习2
变量与数据类型!
- 使用真正的 Redux 和 React-redux
现在 make-react-redux 工程代码中的 Redux 和 React-redux 都是我们自己写的,现在让我们来使用真正的官方版本的 Redux 和 React-redux. 在工程目录下 ...
- 各 Android 平台版本支持的 API 级别
平台版本 API 级别 VERSION_CODE 备注 Android 7.0 24 N 平台亮点 Android 6.0 23 M 平台亮点 Android 5.1 22 LOLLIPOP_MR1 ...
- ZIP解压缩文件的工具类【支持多级目录|全】
ZIP解压缩文件的工具类[支持多级目录|全] 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了.本解压缩工具类经过多次检查及重构,最终分享给大 ...
- IE8提速经验
给人写了个web程序,其中detail页要加载不少东西,所以耗时略长.因为bootstrap的原因,我要求用户使用chrome; 而chrome出了名的快,所以也基本没觉得什么. 后来用户因为别的原因 ...
- php 批量依照ID建立 文件
<?php // 登录验证 include_once('inc/conn.php'); // sql查询 $sql="SELECT * FROM zcgl ";// $res ...
- 禁用DRM
10G: alter system set "_gc_policy_time"=0 scope=spfile sid='*'; alter system set "_gc ...
- Android主题更换换肤
知识总览android主题换肤通常借助LayoutInflater#setFactory实现换肤. 换肤步骤: 通过解析外部的apk压缩文件,创建自定义的Resource对象去访问apk压缩文件的资源 ...
- java 面试题整理
java面试题 1.接口和抽象类的区别 抽象类 接口 抽象类中可以有默认方法 在java8之前,不能有默认方法 extends implements 抽象类中可以有构造器 接口中不能有构造器 抽象类中 ...