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

那我就在排序的情况下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+主席树相关推荐

  1. loj#6169. 相似序列

    讲题前先讲故事 miaom:你快来做这道题啊啊==我已经A掉了我教你 啊 YYMHL:吼啊 10 min later miaom:你听懂了嘛? YYMHL:不对啊 10 min later YYMHL ...

  2. 模板三连击:树状数组+线段树+主席树

    没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...

  3. [联合集训6-25] 蓝雨 线段树+主席树+hash

    先考虑p=qp=qp=q的情况,习惯先把求第kkk大变成求第k" role="presentation" style="position: relative;& ...

  4. LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)

    LOJ 洛谷 这题不就是Peaks(加强版)或者归程么..这算是\(IOI2018\)撞上\(NOI2018\)的题了? \(Kruskal\)重构树(具体是所有点按从小到大/从大到小的顺序,依次加入 ...

  5. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

    题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...

  6. 【BZOJ2653】middle,主席树(非权值线段树)维护序列和信息+二分答案

    传送门 写在前面:虽然这是一道我再也不想写的题目,但很好很有价值 思路: cxlove大神: 要求中位数最大,首先二分中位数,然后判断可行不可行. 判断X可行不可行,对于区间内的数,凡是>=X的 ...

  7. 【bzoj 十连测】[noip2016十连测第三场]Problem C: 序列(静态主席树)

    Problem C: [noip2016十连测第三场]序列 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 78  Solved: 32 [Submi ...

  8. LOJ 3055 「HNOI2019」JOJO—— kmp自动机+主席树

    题目:https://loj.ac/problem/3055 先写了暴力.本来想的是 n<=300 的那个在树上暴力维护好整个字符串, x=1 的那个用主席树维护好字符串和 nxt 数组.但 x ...

  9. loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...

    $ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...

最新文章

  1. rabbitmq可靠发送的自动重试机制 --转
  2. PythonElementTree
  3. libtorch 加载失败
  4. Redis 学习资料整理
  5. 【项目实战课】AI零基础,人人免费可学!基于Pytorch的SimpleNet人脸表情识别实战...
  6. linux exchange邮件客户端,Linux中使用Hiri邮件客户端访问Exchange帐户
  7. python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法...
  8. 难得一见的DIY针孔相机
  9. 基于进程的游戏Server端架构设计
  10. 如何退出scala命令界面和scala常用命令
  11. 商城系统源码开发技巧分享
  12. Amplify Shader Editor手册 Unity ASE(中文版)
  13. 计算机二级C语言题库(44套真题+刷题软件)第二套
  14. OSChina 周六乱弹 —— 成功的解决了发现问题的人
  15. 电厂GPS北斗时钟同步(卫星时间同步系统)组成及配置
  16. 一个完整的研发体系应该包括的内容
  17. 老马 Markov 其人
  18. Output Messenger 2.0.10 Full - 即时消息软件(服务端+客户端)
  19. Unity LOD-Level of Detail(多层次细节)使用心得2—— LOD Bias设置
  20. 【DP】CF940E Cashback

热门文章

  1. 什么是VR虚拟展厅,VR虚拟展厅怎么做有什么功能?
  2. Leetcode36.Valid Sudoku有效的数独
  3. Lasso交叉验证构建模型并计算各样本评分
  4. ns-3中的数据跟踪与采集——Tracing系统综述及fourth脚本
  5. Dreamweaver CS6下载
  6. 数据可视化,python英雄联盟个人能力值雷达图绘制。
  7. 2023 ciscn国赛pwn lojin wp
  8. python输出斐波那契数列前20项、每输出5个数换行_按要求编写程序:输出斐波那契数列的前20项,每行输出5项....
  9. scGPT:单细胞的末日与开端
  10. PBI数据分析实战:场地类数据分析