loj#6169. 相似序列 hash+主席树
因为他的相似是在排完序下的
那我就在排序的情况下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+主席树的更多相关文章
- 【LOJ#6073】距离(主席树)
[LOJ#6073]距离(主席树) 题面 LOJ 题解 两点间的距离是\(dep[x]+dep[y]-2dep[LCA]\). 那么题目要求的东西拆开维护,唯一不好做的就是\(2dep[LCA]\). ...
- 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树
[BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...
- HDU 5790 Prefix(Hash + 主席树)
题目链接 Prefix 题意 给定一个字符串序列,求第$l$个字符串到第$r$个字符串之间有多少个不同的前缀 强制在线 考虑$Hash$ 首先把所有前缀都$hash$出来,按顺序组成一个长度不超过 ...
- BZOJ_3207_花神的嘲讽计划1_(Hash+主席树)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3207 给出一个长度为\(n\)的串,以及\(m\)个长度为\(k\)的串,求每个长度为\(k\ ...
- 【洛谷5294】[HNOI2019] 序列(主席树维护单调栈+二分)
点此看题面 大致题意: 给你一个长度为\(n\)的序列\(A\),每次询问修改一个元素(只对当前询问有效),然后让你找到一个不下降序列\(B\),使得这两个序列相应位置之差的平方和最小,并输出这个最小 ...
- [CSP-S模拟测试]:序列(主席树)
题目描述 小$A$把自己之前得到的序列展示给了小$B$,不过这一次,他并不要求小$B$模仿他之前的行为.他给了小$B$一些询问,每个询问都是$l\ r\ x$的形式,要求小$B$数出在序列的第$l$个 ...
- 2018.10.08 NOIP模拟 序列(主席树)
传送门 T2防ak题? 其实也不是很难(考试时sb了). 直接变形一下求出区间长度在[l2,r2][l2,r2][l2,r2]之间,中位数≤l1−1\le l1-1≤l1−1的区间数,和区间长度在[l ...
- LOJ 2555 「CTSC2018」混合果汁——主席树
题目:https://loj.ac/problem/2555 二分答案,在可以选的果汁中,从价格最小的开始选. 按价格排序,每次可以选的就是一个前缀.对序列建主席树,以价格为角标,维护体积和.体积*价 ...
- 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers
题目:[POI2014]KUR-Couriers 题解: 要求出现次数大于(R-L+1)/2的数,这样的数最多只有一个.我们对序列做主席树,每个节点记录出现的次数和(sum).(这里忽略版本差值问题) ...
随机推荐
- html5+CSS3实现的炫酷超链接特效
今天为大家介绍一个非常炫酷的超链接特效.在你做一些前端的网页时可以在里面去用上这些前卫时尚的效果. 这些超链接特性,大都是借助伪元素.svg.HTML5动画来实现的.效果都很漂亮,不信看下面. 用你的 ...
- IDEAL葵花宝典:java代码开发规范插件 (maven helper)解决maven 包冲突的问题
小编说到: 在我们日常开发当中常常我们会遇到JAR包冲突.找来找去还找不到很是烦人.那么所谓的JAR包冲突是指的什么那?JAR包冲突就是-引入的同一个JAR包却有好几个版本. 例如: 项目中引用了两个 ...
- python基础-元组
操作元组 获取元组中的值 tup1 = ('高数','计算机',2008,2016) tup2 = (1,2,3,4,5,6,7) #和list的一样,同样取下标1,2,3,4的值 print(&qu ...
- 【C】四则运算生成和核对器----by郁卓、谢明浩
[Github项目地址] 完成功能: 1. 使用 -n 参数控制生成题目的个数 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围 3. 生成的题目中计算过程不能产生负数,也就是 ...
- leetcode 104 Maximum Depth of Binary Tree(DFS)
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- perl 语言学习总结
.#!/usr/bin/perl -w 内建警告信息,Perl发出警告 .字符串 . 连接符 .重复次数 .字符串与数字之间的自动转换 .; + += *= .= not and or xor .pr ...
- 【转】Pro Android学习笔记(六):了解Content Provider(中)
Content Provider的架构 Authority类似web中的域名,每个content provider会通过AndroidManifest.xml向系统注册authority,如下.其中n ...
- chromium浏览器开发系列第四篇:如何调试最新chromium
接二连三的事情,时间比较紧张,但是还是没有把这个系列的文章丢掉,因为这也是对自己知识的总结吧.提倡大家多写写,以后再看的时候会有种莫名的小激动. 上周写的是chromium的目录结构,好像大家不太感兴 ...
- linux下使用c判断文件夹是否为空的小程序
自己写了一个 判断文件夹是否为空的小代码 //文件夹操作相关的函数的帮助$: man 3 readdir #include <stdio.h> #include <sys/types ...
- 慕课网java就业班级
家里电脑教程路径: F:\教程\java-慕课 开发工具路径: D:\java 公司电脑:开发工具路径 J:\java\开发工具 教程路径: G:\学习中\廖雪峰的java教程\1-Java快速入门\ ...