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).(这里忽略版本差值问题) ...
随机推荐
- tkinter之canvas(画布)
画布的例子: from tkinter import * root=Tk() root.title('简易绘图') can=Canvas(root,width=400,height=300,bg='# ...
- Android窗口系统第一篇---Window的类型与Z-Order确定
Android的窗口系统是UI架构很重要的一部分,数据结构比较多,细节比较多.本篇文章主要介绍窗口相关数据结构和抽象概念理解,关于[窗口部分的博客]计划如下. 1.窗口Z-Order的管理 2.应用程 ...
- 事件驱动模式--Reactor
原文:https://www.cnblogs.com/harvyxu/p/7498763.html 1 Reactor模型 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思 ...
- codeforces 659D D. Bicycle Race(水题)
题目链接: D. Bicycle Race time limit per test 1 second memory limit per test 256 megabytes input standar ...
- leetcode 19. Remove Nth Node From End of List(链表)
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- Nginx均衡负载配置
前言:Nginx也是一种服务器,反向代理服务器.单一tomcat能承受的并发访问量在150-200之间,还是在比较理想的情况下,当并发量超出这个范围,便需要Nginx实现多个tomcat的均衡负载,但 ...
- linux 进程学习笔记-进程跟踪
进程跟踪 long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data); Linux用ptrace来进行进 ...
- SpringMVC之二:配置 Spring MVC
Servlet 3.0规范在2009年12月份就发布了,因此很有可能你会将应用部署到支持Servlet 3.0的Servlet容器之中,如tomcat7.0及以上.在Servlet 3 规范中,可以使 ...
- Lagom学习 四 CompletionStage
Future: Java 8 之前的 Java 版本功能较弱,仅支持两种用法:要么检查 future 是否已经完成,要么等待 future 完成; Java 8 增加了 CompletableFutu ...
- linux ip地址自动获取,ip地址…
linux ip地址自动获取,ip地址手动设置(图文解释) 2011-04-19 16:19:31| 分类: 服务器(appache/n | 标签: |字号大中小 订阅 linux ip地址自动获取( ...