主席树 又称函数式线段树,又称可持久化线段树……缺点是内存有点儿大……

  1. type node1=record
  2. l,r,sum:longint;
  3. end;
  4. node2=record
  5. x,idx:longint;
  6. end;
  7. var q,i,j,k,tot,n,m:longint;
  8. a:array[..] of node2;
  9. rank,root:array[..] of longint;
  10. t:array[..] of node1;
  11. procedure qsort(h,l:longint);
  12. var i,j,m:longint;
  13. temp:node2;
  14. begin
  15. i:=h;j:=l;m:=a[(i+j)>>].x;
  16. repeat
  17. while a[i].x<m do inc(i);
  18. while a[j].x>m do dec(j);
  19. if i<=j then
  20. begin
  21. temp:=a[i];a[i]:=a[j];a[j]:=temp;
  22. inc(i);dec(j);
  23. end;
  24. until i>j;
  25. if i<l then qsort(i,l);
  26. if j>h then qsort(h,j);
  27. end;
  28. procedure insert(var x:longint;num,l,r:longint);
  29. var mid:longint;
  30. begin
  31. t[tot]:=t[x];
  32. x:=tot;
  33. inc(tot);
  34. inc(t[x].sum);
  35. if l=r then exit;
  36. mid:=(l+r)>>;
  37. if num<=mid then insert(t[x].l,num,l,mid)
  38. else insert(t[x].r,num,mid+,r);
  39. end;
  40. function query(i,j,k,l,r:longint):longint;
  41. var mid,tmp:longint;
  42. begin
  43. if l=r then exit(l);
  44. tmp:=t[t[j].l].sum-t[t[i].l].sum;
  45. mid:=(l+r)>>;
  46. if k<=tmp then exit(query(t[i].l,t[j].l,k,l,mid))
  47. else exit(query(t[i].r,t[j].r,k-tmp,mid+,r));
  48. end;
  49. procedure main;
  50. begin
  51. t[].l:=;t[].r:=;t[].sum:=;root[]:=;
  52. readln(n,m);
  53. for i:= to n do begin read(a[i].x);a[i].idx:=i;end;
  54. qsort(,n);
  55. tot:=;
  56. for i:= to n do rank[a[i].idx]:=i;
  57. for i:= to n do
  58. begin
  59. root[i]:=root[i-];
  60. insert(root[i],rank[i],,n);
  61. end;
  62. for q:= to m do
  63. begin
  64. readln(i,j,k);
  65. writeln(a[query(root[i-],root[j],k,,n)].x);
  66. end;
  67. end;
  68. begin
  69. main;
  70. end.

poj2014 不带修改区间第k大树的更多相关文章

  1. 少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小

    少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小 有一道题(BZOJ 1901)是这样的:n个数,m个询问,询问有两种:修改某个数/询问区间第k小. 不带修改的区间第k小用主席树很好写 ...

  2. 【ZOJ2112】【整体二分+树状数组】带修改区间第k大

    The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...

  3. Dynamic Rankings——带修改区间第k大

    三种做法:1.整体二分: 二分mid 考虑小于mid的修改的影响 但是大于mid的修改可能会干掉小于mid的一些值 所以额外把一个修改变成一个值的删除和一个值的添加 这样就相互独立了! 整体二分,树状 ...

  4. luogu P2617 Dynamic Rankings && bzoj 1901 (带修改区间第k大)

    链接:https://www.luogu.org/problemnew/show/P2617 思路: 如果直接在主席树上修改的话,每次修改都会对后面所有的树造成影响,一次修改的复杂度就会变成 : n* ...

  5. 【树状数组套主席树】带修改区间K大数

    P2617 Dynamic Rankings 题目描述给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+ ...

  6. HDU 2665.Kth number-可持久化线段树(无修改区间第K小)模板 (POJ 2104.K-th Number 、洛谷 P3834 【模板】可持久化线段树 1(主席树)只是输入格式不一样,其他几乎都一样的)

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. 「BZOJ3065」带插入区间第K小值 替罪羊树×线段树

    题目描述 从前有\(n\)只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力\(a_i\).跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间\(k\)小值.他 ...

  8. 计蒜客 39272.Tree-树链剖分(点权)+带修改区间异或和 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest E.) 2019ICPC西安邀请赛现场赛重现赛

    Tree Ming and Hong are playing a simple game called nim game. They have nn piles of stones numbered  ...

  9. ZOJ 2112 Dynamic Rankings(树状数组套主席树 可修改区间第k小)题解

    题意:求区间第k小,节点可修改 思路:如果直接用静态第k小去做,显然我更改一个节点后,后面的树都要改,这个复杂度太高.那么我们想到树状数组思路,树状数组是求前缀和,那么我们可以用树状数组套主席树,求出 ...

随机推荐

  1. SYN, FIN, ACK, PSH, RST, URG

    在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...

  2. DemoExample

    <HTML> <HEAD> <TITLE>使用递归求解斐波那契数列</TITLE> </HEAD> <BODY> <?ph ...

  3. OO之策略模式

    以下为策略模式详解: 引子: 使用策略就是要实现可扩展性,那么多态是不可少的.何谓可扩展性呢? 比如:我们用面向对象的思想来设计飞机,基类为飞机,飞机可以有很多种,客机,直升机,战斗机等,不同种类的飞 ...

  4. eclipse *.vm 文件,语法高亮

    eclipse *.vm 文件,语法高亮按如下方式不起作用,原因不明.设置文件打开时使用的编辑器General>>Editors>>File Associations 下述方试 ...

  5. 然爸读书笔记(2014-10)----Bootsrap用户手册

    本来其实这方面的知识,可以直接在网站上看,但是自己是web前端的小白.基本不懂.所以,还是买一本书来看,更好些.体现出我对前端的重视. Bootstrap是快速开发Web应用程序的前端工具包.它是一个 ...

  6. 浅谈JavaSccript函数与对象

    函数 解剖函数 function One(leve1 , leve2){ //code return leve1+leve2 } 注释: 形参不需要加上类型: return语句为可选,没有return ...

  7. POJ1734 - Sightseeing trip

    DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its ...

  8. google protobuf 使用示例

    定义.proto接口文件 package tutorial; message Person { required ; required int32 id = ; //unique ID number ...

  9. 【斜率DP】BZOJ 1010:玩具装箱

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7537  Solved: 2888[Submit][St ...

  10. HDU 1757 A Simple Math Problem(矩阵快速幂)

    题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + …… ...