挺裸的,没啥可讲的。

不带修改的主席树裸题

Code:

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 500000 + 5;
int n, m ,root[maxn];
struct Chair_Tree{
int cnt_Tree;
int lson[maxn * 50], rson[maxn * 50], sumv[maxn * 50];
void build(int l, int r, int &o){
if(l > r) return ;
o = ++cnt_Tree;
if(l == r) return ;
int mid = (l + r) >> 1;
build(l, mid, lson[o]);
build(mid + 1, r, rson[o]);
}
int insert(int l, int r, int pos, int o){
int oo = ++cnt_Tree;
lson[oo] = lson[o], rson[oo] = rson[o], sumv[oo] = sumv[o] + 1;
if(l == r) return oo;
int mid = (l + r) >> 1;
if(pos <= mid) lson[oo] = insert(l, mid, pos, lson[o]);
else rson[oo] = insert(mid + 1, r, pos, rson[o]);
return oo;
}
int query(int l, int r, int k, int pre_o, int cur_o){
if(l == r) return l;
int lsum = sumv[lson[cur_o]] - sumv[lson[pre_o]];
int cur_sum = sumv[cur_o] - sumv[pre_o];
int mid = (l + r) >> 1;
if(k <= lsum) return query(l, mid, k, lson[pre_o], lson[cur_o]);
else if(cur_sum - lsum >= k) return query(mid + 1, r, k, rson[pre_o], rson[cur_o]);
else return 0;
}
}T;
int main(){
scanf("%d%d",&n,&m);
T.build(1, n, root[0]);
for(int i = 1;i <= n; ++i)
{
int cur_num;
scanf("%d",&cur_num);
root[i] = T.insert(1, n, cur_num, root[i - 1]);
}
while(m--){
int l, r, k;
scanf("%d%d",&l,&r);
k = (r - l + 1)/2 + 1;
printf("%d\n", T.query(1, n, k, root[l - 1], root[r]));
}
return 0;
}

最新文章

  1. 了解Package Configurations
  2. ubuntu ulimit 设置
  3. mysql服务器io等待高定位与分析
  4. Android新组件RecyclerView介绍,其效率更好
  5. BZOJ-1228 E&amp;D 博弈SG+找啊找啊找规律
  6. shell应用——主控脚本实现(1)
  7. Vue.js相关知识2-组件
  8. C#三个平台上的文件选择方法
  9. 查看并设置oracle并发连接数
  10. Spark Streaming连接TCP Socket
  11. 几个常用的CSS3样式代码以及不兼容的解决办法
  12. nodejs版本管理工具NVM(Node Version Mene)
  13. pig运行方法:本地与云上
  14. linux下如何查询未知库所依赖的包
  15. (双指针) leetcode 27. Remove Element
  16. 涂鸦之作WanAndroid第三方APP
  17. 在Vmware中安装CentOS7
  18. react-navigation实现页面框架(转载)
  19. 屏蔽win10中文输入法
  20. Jersey 2.x 基于 Servlet 的服务器端应用

热门文章

  1. Linux部署之NFS方式安装系统
  2. vue-cli webpack配置中 如何启动less-loader sass-loader
  3. JavaScript中必记英语单词及含义
  4. 构造器参数过多时考虑使用构建器(Builder)
  5. Java用freemarker导出Word 文档
  6. HTML特殊符号对照表、常用的字符实体
  7. CF482C Game with Strings (状压DP+期望DP)
  8. CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
  9. 数据库-mongodb-Gridfs
  10. codeforces Looksery Cup 2015 H Degenerate Matrix 二分 注意浮点数陷阱