BZOJ3207: 花神的嘲讽计划Ⅰ(hash)
3207: 花神的嘲讽计划Ⅰ
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 3569 Solved: 1258
[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
思路:由于长度是一定的,所以我们预处理出所有的长度为K的hash,并且把hash值相同的存到同一个set里,区间判定的时候用set的lower_bound即可。
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define ui unsigned int
using namespace std;
const int maxn=;
const ui seed1=,seed2=;
int N,M,K,a[maxn],cnt;
ui p1[maxn],p2[maxn],hash1[maxn],hash2[maxn];
set<int>s[maxn]; set<int>::iterator it;
unordered_map<pair<ui,ui>,int>mp;
int main()
{
scanf("%d%d%d",&N,&M,&K);
rep(i,,N) scanf("%d",&a[i]);
rep(i,,N) hash1[i]=hash1[i-]*seed1+a[i];
rep(i,,N) hash2[i]=hash2[i-]*seed2+a[i];
p1[]=p2[]=;
rep(i,,N) p1[i]=p1[i-]*seed1,p2[i]=p2[i-]*seed2;
rep(i,,N-K+) {
ui x=hash1[i+K-]-hash1[i-]*p1[K];
ui y=hash2[i+K-]-hash2[i-]*p2[K];
if(mp.find(make_pair(x,y))==mp.end()) mp[make_pair(x,y)]=++cnt;
s[mp[make_pair(x,y)]].insert(i);
}
rep(i,,M){
int L,R,x; ui res1=,res2=;
scanf("%d%d",&L,&R);
rep(j,,K){
scanf("%d",&x);
res1=res1*seed1+x;
res2=res2*seed2+x;
}
if(mp.find(make_pair(res1,res2))==mp.end()) puts("Yes");
else {
int pos=mp[make_pair(res1,res2)];
it=s[pos].lower_bound(L);
if(it==s[pos].end()||*it>R-K+) puts("Yes");
else puts("No");
}
}
return ;
}
BZOJ3207: 花神的嘲讽计划Ⅰ(hash)的更多相关文章
- 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树
[BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...
- BZOJ 3207: 花神的嘲讽计划Ⅰ( hash + 可持久化线段树 )
O(NK)暴力搞出所有子串的哈希值, 然后就对哈希值离散化建权值线段树, 就是主席树的经典做法了.总时间复杂度O(NK+(N+Q)logN) ----------------------------- ...
- BZOJ3207花神的嘲讽计划Ⅰ——主席树+hash
题目描述 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天DJ在给吾等众蒟 ...
- 【bzoj3207】花神的嘲讽计划Ⅰ Hash+STL-map+莫队算法
题目描述 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天DJ在给吾等众蒟 ...
- [bzoj3207][花神的嘲讽计划Ⅰ] (字符串哈希+主席树)
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...
- [BZOJ3207] 花神的嘲讽计划Ⅰ (主席树)
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...
- BZOJ3207 花神的嘲讽计划I
Time Limit: 10 Sec Memory Limit: 128 MB Summary 给你一个模式串P,q个询问,对每个询问回答从Pl到Pr是否存在与给定串相同的子串,同时有所有的给定串长度 ...
- [bzoj3207]花神的嘲讽计划Ⅰ[可持久化线段树,hash]
将每k个数字求一个哈希值,存入可持久化线段树,直接查询即可 #include <iostream> #include <algorithm> #include <cstd ...
- BZOJ3207: 花神的嘲讽计划Ⅰ
显然hash,然后stl随便搞. #include<bits/stdc++.h> #define N 100005 using namespace std; typedef unsigne ...
随机推荐
- (27)Cocos2d-x 3.0 Json用法
Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...
- tp基础补充
ThinkPHP php框架 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分 ...
- ssm所需要的pom(jre8、tomcat8、spring4)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- MapReduce: number of mappers/reducers
14 down vote It's the other way round. Number of mappers is decided based on the number of splits. I ...
- flask使用ajax提交表单
Flask中使用ajax提交表单刷新数据,避免提交表单后使用return render_temp()会刷新页面 <form id ="test_form"> {{ fo ...
- 上传jar包至nexus
上传命令: mvn deploy:deploy-file -DgroupId=com.xxx -DartifactId=xxx-pdf -Dversion=16.10.0 -Dpackaging=ja ...
- 20155201 2016-2017-2 《Java程序设计》第九周学习总结
20155201 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC全名JavaDataBaseConnecticity,是Jav ...
- OpenCV/OpenCL/OpenGL区别
OpenCV/OpenCL/OpenGL区别: OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言.跨平台的应用程序接口(API)的规格,它用于生成二维.三维图像. ...
- 强连通分量(Korasaju & Tarjan)学习笔记
好久以前学过的东西...现在已经全忘了 很多图论问题需要用到强连通分量,还是很有必要重新学一遍的 强连通分量(Strongly Connected Component / SCC) 指在一个有向图中, ...
- [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件
首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...