因为他的相似是在排完序下的

那我就在排序的情况下hash啊

这怎么hash啊

主席树啊!

没了

 #include <bits/stdc++.h>
#define MAXNODE 5000000
#define MAX 200000
using namespace std;
int NODE,T,n,q,_l,_r,L,R;
int a[MAX],val[MAX],ma[MAX],root[MAX];
int tr[MAXNODE],c[MAXNODE][];
int change(int acc,int l,int r,int x,int y)
{
if(l==r)
{
tr[++NODE]=y+tr[acc];
c[NODE][]=c[NODE][]=;
return NODE;
}
int now=++NODE,mid=l+r>>;
if(x<=mid)
c[now][]=change(c[acc][],l,mid,x,y),
c[now][]=c[acc][];
else
c[now][]=c[acc][],
c[now][]=change(c[acc][],mid+,r,x,y);
tr[now]=tr[c[now][]]+tr[c[now][]];
return now;
}
int tre(int rt,int x)
{
int ret=;
for(int now=root[rt],l=,r=MAX;l<r;)
{
int mid=l+r>>;
if(x<=mid)
{
r=mid,now=c[now][];
if(r==x) return ret+tr[now];
}
if(x>mid)
l=mid+,ret+=tr[c[now][]],now=c[now][];
}
return ret;
}
int ha(int l,int r,int L,int R)
{
return tre(r,R)-tre(r,L-)-tre(l-,R)+tre(l-,L-);
}
int main()
{
srand(time());
for(scanf("%d",&T);T;T--)
{
scanf("%d%d",&n,&q);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
val[i]=ma[a[i]]?ma[a[i]]:(ma[a[i]]=rand());
// val[i]=a[i];
}
root[]=;c[][]=c[][]=;tr[]=;NODE=;
for(int i=;i<=n;i++)
root[i]=change(root[i-],,MAX,a[i],val[i]);
for(int i=;i<=q;i++)
{
scanf("%d%d%d%d",&_l,&_r,&L,&R);
bool gg=;
for(int l=,r=MAX;l<r;)
{
int mid=l+r>>;
if(ha(_l,_r,l,mid)==ha(L,R,l,mid))
l=mid+;
else
if(ha(_l,_r,mid+,r)==ha(L,R,mid+,r))
r=mid;
else
{
int ll=l,rr=mid;
for(;ll<rr;)
{
int mm=ll+rr>>;
if(ha(_l,_r,ll,mm)==ha(L,R,ll,mm)) ll=mm+;
else rr=mm;
}
int tt=ll;
ll=mid+,rr=r;
for(;ll<rr;)
{
int mm=ll+rr>>;
if(ha(_l,_r,mm+,rr)==ha(L,R,mm+,rr)) rr=mm;
else ll=mm+;
}
int ttt=ll;
if(tt==ttt- || ha(_l,_r,tt+,ttt-)== && ha(L,R,tt+,ttt-)==) break;
else
{
gg=;
break;
}
}
}
puts((gg==)?"NO":"YES");
}
}
return ;
}

loj#6169. 相似序列 hash+主席树的更多相关文章

  1. 【LOJ#6073】距离(主席树)

    [LOJ#6073]距离(主席树) 题面 LOJ 题解 两点间的距离是\(dep[x]+dep[y]-2dep[LCA]\). 那么题目要求的东西拆开维护,唯一不好做的就是\(2dep[LCA]\). ...

  2. 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树

    [BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...

  3. HDU 5790 Prefix(Hash + 主席树)

    题目链接  Prefix 题意  给定一个字符串序列,求第$l$个字符串到第$r$个字符串之间有多少个不同的前缀 强制在线 考虑$Hash$ 首先把所有前缀都$hash$出来,按顺序组成一个长度不超过 ...

  4. BZOJ_3207_花神的嘲讽计划1_(Hash+主席树)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3207 给出一个长度为\(n\)的串,以及\(m\)个长度为\(k\)的串,求每个长度为\(k\ ...

  5. 【洛谷5294】[HNOI2019] 序列(主席树维护单调栈+二分)

    点此看题面 大致题意: 给你一个长度为\(n\)的序列\(A\),每次询问修改一个元素(只对当前询问有效),然后让你找到一个不下降序列\(B\),使得这两个序列相应位置之差的平方和最小,并输出这个最小 ...

  6. [CSP-S模拟测试]:序列(主席树)

    题目描述 小$A$把自己之前得到的序列展示给了小$B$,不过这一次,他并不要求小$B$模仿他之前的行为.他给了小$B$一些询问,每个询问都是$l\ r\ x$的形式,要求小$B$数出在序列的第$l$个 ...

  7. 2018.10.08 NOIP模拟 序列(主席树)

    传送门 T2防ak题? 其实也不是很难(考试时sb了). 直接变形一下求出区间长度在[l2,r2][l2,r2][l2,r2]之间,中位数≤l1−1\le l1-1≤l1−1的区间数,和区间长度在[l ...

  8. LOJ 2555 「CTSC2018」混合果汁——主席树

    题目:https://loj.ac/problem/2555 二分答案,在可以选的果汁中,从价格最小的开始选. 按价格排序,每次可以选的就是一个前缀.对序列建主席树,以价格为角标,维护体积和.体积*价 ...

  9. 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers

    题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...

随机推荐

  1. java 创建 HMAC 签名

    ava 创建 HMAC 签名 psd素材 1. []ComputopTest.java package com.javaonly.hmac.test; import java.io.IOExcepti ...

  2. 机器学习:决策树--python

    今天,我们介绍机器学习里比较常用的一种分类算法,决策树.决策树是对人类认知识别的一种模拟,给你一堆看似杂乱无章的数据,如何用尽可能少的特征,对这些数据进行有效的分类. 决策树借助了一种层级分类的概念, ...

  3. 《HTTP2基础教程》笔记

    <HTTP2基础教程>笔记 HTTP/1问题 队头阻塞 低效TCP 慢启动 拥塞避免阶段 臃肿头部 受限的优先级 高优先级无法插队 第三方资源 h2也无法很好解决 web性能优化 DNS查 ...

  4. ACM学习历程—SNNUOJ 1110 传输网络((并查集 && 离线) || (线段树 && 时间戳))(2015陕西省大学生程序设计竞赛D题)

    Description Byteland国家的网络单向传输系统可以被看成是以首都 Bytetown为中心的有向树,一开始只有Bytetown建有基站,所有其他城市的信号都是从Bytetown传输过来的 ...

  5. bzoj4555: 求和sum 快速傅立叶变换

    题目大意 给定\(S(n,m)\)表示第二类斯特林数,定义函数\(f(n)\) \[f(n) = \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*(j!)\] 给定正整数\(n, ...

  6. mac内置的FTP工具

    在 Mac OS X 系统下,有不少优秀的 FTP 工具,如 Cyberduck.Transmit,但是你是否知道除了这些第三方应用,系统已经为你准备好了一个内置的 FTP 工具?/ M: e0 J% ...

  7. POJ3067(树状数组:统计数字出现个数)

    Japan Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24151   Accepted: 6535 Descriptio ...

  8. 二叉树遍历入门 Lebal:research

    解决二叉树遍历的画法 对于二叉树的基本概念,一般学生都知道,但对于二叉树的遍历,在实际运用中可以发现很多问题,这里提供一次性彻底解决这个问题的方法. 二叉树的遍历 二叉树的遍历是指不重复地访问二叉树中 ...

  9. 为一个vector<cv::KeyPoint*> 类型的变量做初始化

    vector<cv::KeyPoint*> keypoints; int N; keypoints = vector<cv::KeyPoint*>(N, static_cast ...

  10. CodeForces 484A Bits(水题)

    A. Bits time limit per test 1 second memory limit per test 256 megabytes input standard input output ...