题目链接


Solution

主席树水题,连差分的部分都不需要用到.

直接用主席树的结构去存一下就好了.

Code

  1. #include<bits/stdc++.h>
  2. #define mid (l+r)/2
  3. using namespace std;
  4. const int maxn=2000008;
  5. int T[maxn],tot,n,m;
  6. int ch[maxn*10][2];
  7. int a[maxn],id[maxn];
  8. int w[maxn*10],num;
  9. int read()
  10. {
  11. char ch=getchar(); int f=1,w=0;
  12. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  13. while(ch<='9'&&ch>='0'){w=w*10+ch-'0';ch=getchar();}
  14. return f*w;
  15. }
  16. void build(int &node,int l,int r)
  17. {
  18. node=++tot;
  19. if(l==r)
  20. {w[node]=a[l];return;}
  21. build(ch[node][0],l,mid);
  22. build(ch[node][1],mid+1,r);
  23. return;
  24. }
  25. void update(int &node,int pre,int l,int r,int x,int v)
  26. {
  27. node=++tot;
  28. if(l==r){w[node]=v;return;}
  29. ch[node][0]=ch[pre][0];
  30. ch[node][1]=ch[pre][1];
  31. if(x>mid) update(ch[node][1],ch[pre][1],(mid)+1,r,x,v);
  32. else update(ch[node][0],ch[pre][0],l,mid,x,v);
  33. }
  34. int query(int node,int l,int r,int x)
  35. {
  36. if(l==r)return w[node];
  37. if(x>mid)return query(ch[node][1],(mid)+1,r,x);
  38. else return query(ch[node][0],l,mid,x);
  39. }
  40. int main()
  41. {
  42. //freopen("a.in","r",stdin);
  43. //freopen("a.out","w",stdout);
  44. cin>>n>>m;
  45. for(int i=1;i<=n;i++)
  46. a[i]=read();
  47. build(T[0],1,n);
  48. for(int i=1;i<=m;i++)
  49. {
  50. int opt,pre,x,v;
  51. pre=read(); opt=read(); x=read();
  52. if(opt==1)
  53. v=read(),num++,
  54. update(T[num],T[id[pre]],1,n,x,v),id[i]=num;
  55. else
  56. printf("%d\n",query(T[id[pre]],1,n,x)),
  57. id[i]=id[pre];
  58. }
  59. }

P3919 (模板)可持久化数组 (主席树)的更多相关文章

  1. luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)

    luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...

  2. 洛谷P3919 【模板】可持久化数组 [主席树]

    题目传送门 可持久化数组 题目描述 如题,你需要维护这样的一个长度为 $N$ 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对 ...

  3. LUOGU P3919 【模板】可持久化数组(主席树)

    传送门 解题思路 给每一时刻建一棵线段树维护当前时刻的值,然后修改的时候直接修改,查询的时候直接查,记住查询完后一定要复制. 代码 #include<iostream> #include& ...

  4. BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树

    BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树 题意: 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i, ...

  5. ZOJ 2112 Dynamic Rankings(树状数组+主席树)

    题意 \(n\) 个数,\(m\) 个操作,每次操作修改某个数,或者询问某个区间的第 \(K\) 小值. \(1 \leq n \leq 50000\) \(1 \leq m \leq 10000\) ...

  6. P1972 [SDOI2009]HH的项链[离线+树状数组/主席树/分块/模拟]

    题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...

  7. zoj2112 树状数组+主席树 区间动第k大

    Dynamic Rankings Time Limit: 10000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Subm ...

  8. 【bzoj1146】[CTSC2008]网络管理Network 倍增LCA+dfs序+树状数组+主席树

    题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高 ...

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

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

随机推荐

  1. Mycat实现读写分离、分库分表

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. 【转】iOS学习笔记(十五)——数据库操作(SQLite)

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...

  3. [Java] 新手快速就业需要掌握的知识点

    目的:主要是分享下日常工作中使用到的技术点,根据二八定律快速掌握使用知识点,先就业再沉淀去积累经验.(个人建议仅供参考) 背景:目前一般来说,都是前后端分离.你只需要提供接口给前端,他来处理就可以了, ...

  4. appium---命令行启动appium

    在客户端的appium长时间运行的时候,出产生一些数据.日志有可能会对appium的内存有所增长,严重的会使appium产生崩溃,这个时候就推荐使用通过cmd进行运行appium, 安装前提需要安装N ...

  5. java HashMap 内存泄漏

    import java.util.HashMap; import java.util.Map; public class HashMapOver { public static void main(S ...

  6. 01_3_查询指定id的单个对象

    01_3_查询指定id的单个对象 1. 映射文件配置如下信息 <select id="selectStudentById" resultClass="Student ...

  7. 解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题

    笔者今天发现导入cocostudio的ui界面时,会有部分控件出现错位的现象,后来我看了一下源码,发现是部分控件是没有继承 Layout类,导致不能设置控件位置造成,原因可以看看cocos2dx 源码 ...

  8. python爬虫基础15-python图像处理,PIL库

    Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...

  9. Hessian知识学习总结(二)——Hessian的helloworld

    一.下载Hessian 可在hessian官网http://hessian.caucho.com/ 或者http://download.csdn.net/detail/wodediqizhang/95 ...

  10. Django与多个数据库交互

    定义数据库 在Django中使用多个数据库的第一步是告诉Django您将要使用的数据库服务器. 数据库可以有您选择的任何别名.但是,别名 default 有着特殊的意义.Django使用别名为 def ...