达神主席树讲解传送门:http://blog.csdn.net/dad3zz/article/details/50638026


2016-02-23:真的是模板题诶,主席树模板水过。今天新校网不好,没有评测,但我立下flag这个代码一定能A。我的同学在自习课上考语文,然而机房党都跑到机房来避难了\(^o^)/~

2016-02-24:果然A乐~~~,我们机房党又躲过啦数学考试。良心不安啊

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define for1(i,a,n) for(int i=(a);i<=(n);i++)
  5. #define for2(i,a,n) for(int i=(a);i<(n);i++)
  6. #define for3(i,a,n) for(int i=(a);i>=(n);i--)
  7. #define for4(i,a,n) for(int i=(a);i>(n);i--)
  8. #define CC(i,a) memset(i,a,sizeof(i))
  9. #define MID (l+r)>>1
  10. #define read(x) x=getint()
  11. using namespace std;
  12. const int N=100010;
  13. inline int max(const int &a,const int &b){return a>b?a:b;}
  14. inline int min(const int &a,const int &b){return a<b?a:b;}
  15. inline void swapp(int &a,int &b){int c=a;a=b;b=c;}
  16. inline int getint(){char c;int ret=0,k=1;for(c=getchar();c<'0'||c>'9';c=getchar())if(c=='-')k=-1;for(;c>='0'&&c<='9';c=getchar())ret=ret*10+c-'0';return ret*k;}
  17. int key,a[N],id[N],b[N],n,m,root[N],cnt=0;
  18. struct node{int l,r,s;}T[N*50];
  19. inline bool cmp(int x,int y){return a[x]<a[y];}
  20. inline void update(int l,int r,int &pos){
  21. T[++cnt]=T[pos]; pos=cnt; T[pos].s++;
  22. if (l==r) return;
  23. int m=MID;
  24. if (key<=m) update(l,m,T[pos].l); else update(m+1,r,T[pos].r);
  25. }
  26. inline int query(int l,int r,int x,int y,int k){
  27. if (l==r) return l;
  28. int m=MID,s=T[T[y].l].s-T[T[x].l].s;
  29. if (k<=s) return query(l,m,T[x].l,T[y].l,k); else return query(m+1,r,T[x].r,T[y].r,k-s);
  30. }
  31. int main(){
  32. read(n); read(m);
  33. for1(i,1,n) read(a[i]),id[i]=i;
  34. sort(id+1,id+n+1,cmp);
  35. for1(i,1,n) b[id[i]]=i;
  36. for1(i,1,n){
  37. root[i]=root[i-1]; key=b[i];
  38. update(1,n,root[i]);
  39. }int x,y;
  40. while (m--){
  41. read(x); read(y); read(key);
  42. printf("%d\n",a[id[query(1,n,root[x-1],root[y],key)]]);
  43. }return 0;
  44. }

这样就可以了,主席树水过了,然而这是DaD3zZ几年前就虐的东西~~(╯﹏╰)b,本蒟蒻还得努力啊。

【POJ 2104】 K-th Number 主席树模板题的更多相关文章

  1. 主席树:POJ2104 K-th Number (主席树模板题)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 44952   Accepted: 14951 Ca ...

  2. SPOJ MKTHNUM & POJ 2104 - K-th Number - [主席树模板题]

    题目链接:http://poj.org/problem?id=2104 Description You are working for Macrohard company in data struct ...

  3. POJ 2104 K-th Number(主席树模板题)

    http://poj.org/problem?id=2104 题意:求区间$[l,r]$的第k小. 思路:主席树不好理解啊,简单叙述一下吧. 主席树就是由多棵线段树组成的,对于数组$a[1,2...n ...

  4. 【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题

    达神题解传送门:http://blog.csdn.net/dad3zz/article/details/50638360 说一下我对这个模板的理解: 看到这个方法很容易不知所措,因为动态K值需要套树状 ...

  5. poj2104 主席树模板题

    题意 给出n个数字组成的数字序列,有m组询问.每次询问包含三个数字l,r,k.对于每个询问输出序列区间[l,r]中第k大的数字. 分析 这是主席树的模板题,套板子就可以 #include <cs ...

  6. hdu2665(主席树模板题)

    hdu2665 题意 求区间第 k 小. 分析 参考 这类题目做法挺多的,例如 划分树. 这里使用主席树再写一发,不得不说主席树相比而言要好写的多,比起普通线段树,主席树就是复用了线段树共有的信息. ...

  7. POJ-2104-K-th Number(区间第K大+主席树模板题)

    Description You are working for Macrohard company in data structures department. After failing your ...

  8. POJ 2104 主席树模板题

    #include <iostream> #include <cstdio> #include <algorithm> int const maxn = 200010 ...

  9. POJ2104 K-th Number 划分树 模板题啊

    /*Source Code Problem: 2104 User: 96655 Memory: 14808K Time: 1282MS Language: G++ Result: Accepted S ...

随机推荐

  1. 二分套二分 hrbeu.acm.1211Kth Largest

    Kth Largest TimeLimit: 1 Second   MemoryLimit: 32 Megabyte Description There are two sequences A and ...

  2. Google Map API 使用总结

    Google Map API (一):显示一个最基本的地图 1 实现一个地图:<head>中引用: <script type="text/javascript" ...

  3. spring,hibernate,struts的面试笔试题

    1 Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因不是声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在s ...

  4. 通过JDBC进行简单的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  5. Android 多线程----AsyncTask异步任务详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  6. iOS9新特性——堆叠视图UIStackView

    一.引言 随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来说,已经十分方便,但 ...

  7. easyui datagrid 多行删除问题

    问题: var selected = $("#tbList").datagrid("getSelections"); selected的选中项 会包含上次已删掉 ...

  8. 1017. A除以B (20)

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  9. 发发关于JavaScript的感慨,随手记几个js知识碎片

    最近一段时间写了很多JavaScript和jquery代码,越来越感觉js基础不牢固,写一句查半天,有时间肯定要系统的学一下. 不说了,先记一下最近学到的点东西,省的以后没时间系统学js还要再来查. ...

  10. 命令行参数(argc, argv)

    每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过两个入参提供给main()函数. ...