【算法】主席树

【题解】例题,记录和,数字出现超过一半就递归查找。

主席树见【算法】数据结构

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #include<cctype>
  5. using namespace std;
  6. int read()
  7. {
  8. char c;int s=,t=;
  9. while(!isdigit(c=getchar()))if(c=='-')t=-;
  10. do{s=s*+c-'';}while(isdigit(c=getchar()));
  11. return s*t;
  12. }
  13. const int maxn=;
  14. struct tree{int l,r,sum;}t[maxn*];
  15. int n,m,sz,root[maxn];
  16.  
  17. void insert(int L,int R,int x,int &y,int v){
  18. y=++sz;
  19. t[y]=t[x];t[y].sum++;
  20. if(L==R)return;
  21. int mid=(L+R)>>;
  22. if(v<=mid)insert(L,mid,t[x].l,t[y].l,v);
  23. else insert(mid+,R,t[x].r,t[y].r,v);
  24. }
  25. int ask(int L,int R,int x,int y,int v){
  26. if(L==R)return L;
  27. else{
  28. int mid=(L+R)>>;
  29. if(v<t[t[y].l].sum-t[t[x].l].sum)return ask(L,mid,t[x].l,t[y].l,v);else
  30. if(v<t[t[y].r].sum-t[t[x].r].sum)return ask(mid+,R,t[x].r,t[y].r,v);else
  31. return ;
  32. }
  33. }
  34. int main(){
  35. scanf("%d%d",&n,&m);
  36. int u;
  37. for(int i=;i<=n;i++){
  38. u=read();
  39. insert(,n,root[i-],root[i],u);
  40. }
  41. int v;
  42. for(int i=;i<=m;i++){
  43. u=read();v=read();
  44. printf("%d\n",ask(,n,root[u-],root[v],(v-u+)>>));
  45. }
  46. return ;
  47. }

【BZOJ】3524: [Poi2014]Couriers的更多相关文章

  1. 【BZOJ】3524 [POI2014] Couriers(主席树)

    题目 传送门:QWQ 传送到洛谷QWQ 分析 把求区间第k大的改一改就ok了. 代码 #include <bits/stdc++.h> using namespace std; ; ], ...

  2. 【BZOJ】3835: [Poi2014]Supercomputer

    题意 \(n(1 \le 1000000)\)个点的有根树,\(1\)号点为根,\(q(1 \le 1000000)\)次询问,每次给一个\(k\),每一次可以选择\(k\)个未访问的点,且父亲是访问 ...

  3. 【BZOJ】3832: [Poi2014]Rally

    题意 \(n(2 \le n \le 500000)\)个点\(m(1 \le m \le 1000000)\)条边的有向无环图,找到一个点,使得删掉这个点后剩余图中的最长路径最短. 分析 神题不会做 ...

  4. 【BZOJ】3526: [Poi2014]Card

    题意 \(n(n \le 200000)\)张卡片,正反有两个数\(a[i], b[i]\).\(m(m \le 1000000)\)次操作,每次交换\(c[i].d[i]\)位置上的卡片.每一次操作 ...

  5. 【BZOJ】3523: [Poi2014]Bricks

    题意 \(n(n \le 1000000)\)个物品,颜色分别为\(a[i]\),现在要求排在一排使得相邻两个砖块的颜色不同,且限定第一个砖块和最后一个砖块的颜色,输出一个合法解否则输出-1. 分析 ...

  6. 【BZOJ】3521: [Poi2014]Salad Bar

    题意 长度为\(n(1 \le n \le 1000000)\)的\(01\)字符串.找一个最长的连续子串\(S\),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的\(1\)的个数不小于\( ...

  7. 【BZOJ】3834: [Poi2014]Solar Panels

    http://www.lydsy.com/JudgeOnline/problem.php?id=3834 题意:求$max\{(i,j)\}, smin<=i<=smax, wmin< ...

  8. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  9. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

随机推荐

  1. Java clone() 浅拷贝 深拷贝

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  2. erlang转化中文为url

    今天使用http get 方法时,参量中有中文而导致出错. 例如http://abc.com/abc?arg=中文,在erlang使用http:request方法失败. 后来查了url的规范,url中 ...

  3. size和STL中的size_type

    为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型:size_type是STL类中定义的类型属 ...

  4. 模拟jq的设置样式

    //需求,创建一个div,添加到页面上,给div添加属性 //面向对象开发,构造函数创建类 function divTag(){ this.div1=document.createElement('d ...

  5. HDU 2105 The Center of Gravity

    http://acm.hdu.edu.cn/showproblem.php?pid=2105 Problem Description Everyone know the story that how ...

  6. maven 添加tomcat依赖

    https://my.oschina.net/angel243/blog/178554

  7. 【数据库】Mysql更改默认引擎为Innodb的步骤方法

    前言 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.M ...

  8. 51nod 1682 中位数计数(差分统计)

    中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数. 首先,显 ...

  9. Codeforces 618D Hamiltonian Spanning Tree(树的最小路径覆盖)

    题意:给出一张完全图,所有的边的边权都是 y,现在给出图的一个生成树,将生成树上的边的边权改为 x,求一条距离最短的哈密顿路径. 先考虑x>=y的情况,那么应该尽量不走生成树上的边,如果生成树上 ...

  10. AtCoder Grand Contest 019 B: Reverse and Compare

    题意: 给出一个字符串,你可以选择一个长度大于等于1的子串进行翻转,也可以什么都不做.只能翻转最多一次. 问所有不同的操作方式得到的字符串中有多少个是本质不同的. 分析 tourist的题妙妙啊. 首 ...