考虑哈希,令$h[x]$表示根到$x$路径的哈希值,那么有$h[x]+hash(l,r)=h[ans]$

考虑用线段树维护$a_{i}$的区间哈希值,并用map去找到对应的$ans$

但还有一个问题,就是并不一定都能走完,可以在线段树上二分走到哪里,时间复杂度为$o(n\log^{2}n)$

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 500005
4 #define L (k<<1)
5 #define R (L+1)
6 #define mid (l+r>>1)
7 #define base 500007
8 #define mod 998244353
9 vector<int>v[N];
10 map<int,int>mat;
11 int rt,n,m,q,p,x,y,z,h[N],mi[N],f[N<<2];
12 void update(int k,int l,int r,int x,int y){
13 if (l==r){
14 f[k]=y;
15 return;
16 }
17 if (x<=mid)update(L,l,mid,x,y);
18 else update(R,mid+1,r,x,y);
19 f[k]=(1LL*f[L]*mi[r-mid]+f[R])%mod;
20 }
21 int query(int k,int l,int r,int x,int y){
22 if ((l>y)||(x>r))return 0;
23 if ((x<=l)&&(r<=y))return f[k];
24 int ll=max(mid+1,x),rr=min(r,y),len=max(rr-ll+1,0);
25 return (1LL*query(L,l,mid,x,y)*mi[len]+query(R,mid+1,r,x,y))%mod;
26 }
27 int query(int k,int l,int r,int x,int y,int z){
28 if ((l>y)||(x>r)||(!mat[z]))return 0;
29 if (l==r)return mat[z];
30 int ll=max(l,x),rr=min(mid,y),len=max(rr-ll+1,0);
31 int ans=query(R,mid+1,r,x,y,(1LL*z*mi[len]+query(1,1,n,ll,rr))%mod);
32 if (ans)return ans;
33 return query(L,l,mid,x,y,z);
34 }
35 void dfs(int k,int s){
36 h[k]=s;
37 mat[s]=k;
38 for(int i=0;i<v[k].size();i++)dfs(v[k][i],(1LL*s*base+i+1)%mod);
39 }
40 int main(){
41 mi[0]=1;
42 for(int i=1;i<N-4;i++)mi[i]=1LL*mi[i-1]*base%mod;
43 scanf("%d%d%d",&n,&m,&q);
44 for(int i=1;i<=n;i++){
45 scanf("%d",&x);
46 if (!x)rt=i;
47 else v[x].push_back(i);
48 }
49 dfs(rt,0);
50 for(int i=1;i<=m;i++){
51 scanf("%d",&x);
52 update(1,1,m,i,x);
53 }
54 for(int i=1;i<=q;i++){
55 scanf("%d%d%d",&p,&x,&y);
56 if (p==2)update(1,1,m,x,y);
57 else{
58 scanf("%d",&z);
59 int hh=(1LL*h[x]*mi[z-y+1]+query(1,1,m,y,z))%mod;
60 if (mat[hh])printf("%d\n",mat[hh]);
61 else printf("%d\n",query(1,1,m,y,z,h[x]));
62 }
63 }
64 }

[luogu5537]系统设计的更多相关文章

  1. [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ- ...

  2. Web应用多账号系统设计及微信扫码登录实现

    Web应用多账号系统设计及微信扫码登录实现 1   前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...

  3. 【开源】OSharp框架解说系列(6.1):日志系统设计

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  4. 分布式系统设计权衡之CAP

    写在最前: 1.为什么学习并记录分布式设计理念一系列相关的东西 在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是 ...

  5. 基于C/S架构的3D对战网络游戏C++框架 _02系统设计(总体设计、概要设计)

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  6. [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)

    Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统 ...

  7. NI Labview 将图形化系统设计用于肿瘤治疗

    NI Labview 将图形化系统设计用于肿瘤治疗 - Jeff Stevens, Sanarus 挑战:在严格的规则条例范围内保持设计过程的情况下,为通过FDA认证的等级II医疗设备进行设计.原型并 ...

  8. <转>简单之美——系统设计黄金法则

    作者: 包云岗  发布时间: 2012-05-19 13:06  阅读: 3036 次  推荐: 1   原文链接   [收藏] 最近多次看到系统设计与实现的文章与讨论,再加上以前读过的其他资料以及自 ...

  9. atitit.userService 用户系统设计 v4 q316 .doc

    atitit.userService 用户系统设计 v4 q316 .doc 1. 新特性1 2. Admin  login1 3. 用户注册登录2 3.1. <!-- 会员注册使用 --> ...

随机推荐

  1. 微服务+异步工作流+ Serverless,Netflix 决定弃用稳定运行 7 年的旧平台

    作者 | Frank San Miguel 策划 | 田晓旭 2021 年,Netflix 会将大部分的工作负载从 Reloaded 转移到 Cosmos 平台.Cosmos 是一个计算平台,它将微服 ...

  2. 从零入门 Serverless | 在线应用的 Serverless 实践

    作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...

  3. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  4. I/O系统

    I/O系统的组成 外部设备 接口部件 总线 相应的管理软件 I/O软件 将用户编制的程序(或数据)输入主机内 将运算结果输出给用户 实现输入输出系统与主机工作的协调 I/O系统的基本功能 完成计算机内 ...

  5. Java(42)JDK新特性之接口组成

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201666.html 博客主页:https://www.cnblogs.com/testero ...

  6. Java(18)抽象类

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201625.html 博客主页:https://www.cnblogs.com/testero ...

  7. DL4J实战之五:矩阵操作基本功

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Framework - 性能统计

    摘要 近期对接客户时,客户方希望提供 SDK 的性能.内存.隐私支持等一些数据,所以就对 SDK 进行了一些性能测试. 在用表格统计整理这些数据时,突然发现,经常用统计的方式看 SDK 的相关数据,似 ...

  9. 2021.9.20考试总结[NOIP模拟57]

    (换个编辑器代码就SB地不自动折叠了.. T1 2A 考察快读的写法. $code:$ T1 #include<bits/stdc++.h> #define scanf SCANF=sca ...

  10. Azure File Storage(一)为本地机器配置网络磁盘

    一,引言 本地机器硬盘空间不够了怎么办?重要文件不想存储在本地硬盘怎么办?加外接移动硬盘:或者换大容量存储设备,都是解决方案.但是每次都得携带,还得考虑当前设备是否支持外接硬盘. 1,这个时候 Win ...