loj#6169. 相似序列 hash+主席树
因为他的相似是在排完序下的
那我就在排序的情况下hash啊
这怎么hash啊
主席树啊!
没了
1 #include <bits/stdc++.h> 2 #define MAXNODE 5000000 3 #define MAX 200000 4 using namespace std; 5 int NODE,T,n,q,_l,_r,L,R; 6 int a[MAX],val[MAX],ma[MAX],root[MAX]; 7 int tr[MAXNODE],c[MAXNODE][2]; 8 int change(int acc,int l,int r,int x,int y) 9 { 10 if(l==r) 11 { 12 tr[++NODE]=y+tr[acc]; 13 c[NODE][0]=c[NODE][1]=0; 14 return NODE; 15 } 16 int now=++NODE,mid=l+r>>1; 17 if(x<=mid) 18 c[now][0]=change(c[acc][0],l,mid,x,y), 19 c[now][1]=c[acc][1]; 20 else 21 c[now][0]=c[acc][0], 22 c[now][1]=change(c[acc][1],mid+1,r,x,y); 23 tr[now]=tr[c[now][0]]+tr[c[now][1]]; 24 return now; 25 } 26 int tre(int rt,int x) 27 { 28 int ret=0; 29 for(int now=root[rt],l=1,r=MAX;l<r;) 30 { 31 int mid=l+r>>1; 32 if(x<=mid) 33 { 34 r=mid,now=c[now][0]; 35 if(r==x) return ret+tr[now]; 36 } 37 if(x>mid) 38 l=mid+1,ret+=tr[c[now][0]],now=c[now][1]; 39 } 40 return ret; 41 } 42 int ha(int l,int r,int L,int R) 43 { 44 return tre(r,R)-tre(r,L-1)-tre(l-1,R)+tre(l-1,L-1); 45 } 46 int main() 47 { 48 srand(time(0)); 49 for(scanf("%d",&T);T;T--) 50 { 51 scanf("%d%d",&n,&q); 52 for(int i=1;i<=n;i++) 53 { 54 scanf("%d",&a[i]); 55 val[i]=ma[a[i]]?ma[a[i]]:(ma[a[i]]=rand()); 56 // val[i]=a[i]; 57 } 58 root[0]=1;c[1][0]=c[1][1]=0;tr[1]=0;NODE=1; 59 for(int i=1;i<=n;i++) 60 root[i]=change(root[i-1],1,MAX,a[i],val[i]); 61 for(int i=1;i<=q;i++) 62 { 63 scanf("%d%d%d%d",&_l,&_r,&L,&R); 64 bool gg=0; 65 for(int l=1,r=MAX;l<r;) 66 { 67 int mid=l+r>>1; 68 if(ha(_l,_r,l,mid)==ha(L,R,l,mid)) 69 l=mid+1; 70 else 71 if(ha(_l,_r,mid+1,r)==ha(L,R,mid+1,r)) 72 r=mid; 73 else 74 { 75 int ll=l,rr=mid; 76 for(;ll<rr;) 77 { 78 int mm=ll+rr>>1; 79 if(ha(_l,_r,ll,mm)==ha(L,R,ll,mm)) ll=mm+1; 80 else rr=mm; 81 } 82 int tt=ll; 83 ll=mid+1,rr=r; 84 for(;ll<rr;) 85 { 86 int mm=ll+rr>>1; 87 if(ha(_l,_r,mm+1,rr)==ha(L,R,mm+1,rr)) rr=mm; 88 else ll=mm+1; 89 } 90 int ttt=ll; 91 if(tt==ttt-1 || ha(_l,_r,tt+1,ttt-1)==0 && ha(L,R,tt+1,ttt-1)==0) break; 92 else 93 { 94 gg=1; 95 break; 96 } 97 } 98 } 99 puts((gg==1)?"NO":"YES"); 100 } 101 } 102 return 0; 103 }
转载于:https://www.cnblogs.com/wanglichao/p/7261522.html
loj#6169. 相似序列 hash+主席树相关推荐
- loj#6169. 相似序列
讲题前先讲故事 miaom:你快来做这道题啊啊==我已经A掉了我教你 啊 YYMHL:吼啊 10 min later miaom:你听懂了嘛? YYMHL:不对啊 10 min later YYMHL ...
- 模板三连击:树状数组+线段树+主席树
没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...
- [联合集训6-25] 蓝雨 线段树+主席树+hash
先考虑p=qp=qp=q的情况,习惯先把求第kkk大变成求第k" role="presentation" style="position: relative;& ...
- LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)
LOJ 洛谷 这题不就是Peaks(加强版)或者归程么..这算是\(IOI2018\)撞上\(NOI2018\)的题了? \(Kruskal\)重构树(具体是所有点按从小到大/从大到小的顺序,依次加入 ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- 【BZOJ2653】middle,主席树(非权值线段树)维护序列和信息+二分答案
传送门 写在前面:虽然这是一道我再也不想写的题目,但很好很有价值 思路: cxlove大神: 要求中位数最大,首先二分中位数,然后判断可行不可行. 判断X可行不可行,对于区间内的数,凡是>=X的 ...
- 【bzoj 十连测】[noip2016十连测第三场]Problem C: 序列(静态主席树)
Problem C: [noip2016十连测第三场]序列 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 78 Solved: 32 [Submi ...
- LOJ 3055 「HNOI2019」JOJO—— kmp自动机+主席树
题目:https://loj.ac/problem/3055 先写了暴力.本来想的是 n<=300 的那个在树上暴力维护好整个字符串, x=1 的那个用主席树维护好字符串和 nxt 数组.但 x ...
- loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...
$ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...
最新文章
- rabbitmq可靠发送的自动重试机制 --转
- PythonElementTree
- libtorch 加载失败
- Redis 学习资料整理
- 【项目实战课】AI零基础,人人免费可学!基于Pytorch的SimpleNet人脸表情识别实战...
- linux exchange邮件客户端,Linux中使用Hiri邮件客户端访问Exchange帐户
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法...
- 难得一见的DIY针孔相机
- 基于进程的游戏Server端架构设计
- 如何退出scala命令界面和scala常用命令
- 商城系统源码开发技巧分享
- Amplify Shader Editor手册 Unity ASE(中文版)
- 计算机二级C语言题库(44套真题+刷题软件)第二套
- OSChina 周六乱弹 —— 成功的解决了发现问题的人
- 电厂GPS北斗时钟同步(卫星时间同步系统)组成及配置
- 一个完整的研发体系应该包括的内容
- 老马 Markov 其人
- Output Messenger 2.0.10 Full - 即时消息软件(服务端+客户端)
- Unity LOD-Level of Detail(多层次细节)使用心得2—— LOD Bias设置
- 【DP】CF940E Cashback
热门文章
- 什么是VR虚拟展厅,VR虚拟展厅怎么做有什么功能?
- Leetcode36.Valid Sudoku有效的数独
- Lasso交叉验证构建模型并计算各样本评分
- ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本
- Dreamweaver CS6下载
- 数据可视化,python英雄联盟个人能力值雷达图绘制。
- 2023 ciscn国赛pwn lojin wp
- python输出斐波那契数列前20项、每输出5个数换行_按要求编写程序:输出斐波那契数列的前20项,每行输出5项....
- scGPT:单细胞的末日与开端
- PBI数据分析实战:场地类数据分析