博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3524主席树裸题 (雾)
阅读量:6714 次
发布时间:2019-06-25

本文共 1372 字,大约阅读时间需要 4 分钟。

思路:

按权值建一棵主席树
(但是这好像不是正解 空间复杂度是不对的…….)

//By SiriusRen#include 
#include
#include
using namespace std;#define N 555555int n,m,cnt,root[N],a[N],xx,yy;struct Tree{
int l,r,num;}tree[N*20];void push_up(int pos){tree[pos].num=tree[tree[pos].l].num+tree[tree[pos].r].num;}int build(int l,int r){ int pos=++cnt; if(l==r){
return pos;} int mid=(l+r)>>1; tree[pos].l=build(l,mid),tree[pos].r=build(mid+1,r); return pos;}int insert(int o,int l,int r,int num){ int pos=++cnt;tree[pos]=tree[o]; if(l==r){tree[pos].num++;return pos;} int mid=(l+r)>>1; if(num<=mid)tree[pos].l=insert(tree[o].l,l,mid,num); else tree[pos].r=insert(tree[o].r,mid+1,r,num); push_up(pos); return pos;}int query(int o,int v,int l,int r,int wei){ if(tree[o].num-tree[v].num<=wei)return 0; if(l==r)return l; int mid=(l+r)>>1; if(tree[tree[o].l].num-tree[tree[v].l].num>wei) return query(tree[o].l,tree[v].l,l,mid,wei); else return query(tree[o].r,tree[v].r,mid+1,r,wei);}int main(){ scanf("%d%d",&n,&m); root[0]=build(1,n); for(int i=1;i<=n;i++)scanf("%d",&a[i]),root[i]=insert(root[i-1],1,n,a[i]); for(int i=1;i<=m;i++){ scanf("%d%d",&xx,&yy); printf("%d\n",query(root[yy],root[xx-1],1,n,(yy-xx+1)/2)); }}

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532106.html

你可能感兴趣的文章
到手机里面去点击信任就行了。每次都是这样出错。
查看>>
java B2B2C Springcloud多租户电子商城系统-Eureka服务端与客户端常用配置
查看>>
(十一)java版b2b2c社交电商spring cloud分布式微服务-docker部署spring cloud项目
查看>>
jvm疯狂吞占内存,罪魁祸首是谁?
查看>>
表格存储Tablestore权威指南(持续更新)
查看>>
java B2B2C源码电子商城系统-Kafka快速入门
查看>>
Spring Cloud云服务 - HongHu架构common-service 项目构建过程
查看>>
hadoop中hive原理及安装
查看>>
pear默认安装后一个小bug
查看>>
nginx-通过Nginx统计当前每个域名流量
查看>>
OpenSSL学习(二十五):基础-指令x509
查看>>
sql server随机函数
查看>>
WinAircrackPack 破解你邻居家的无线WIFI密码
查看>>
自定义格式化字符串
查看>>
Redis Desktop Managerg工具
查看>>
bgp发布路由对端无法收到,原因是使用默认网段
查看>>
CentOS7 Xapian 1.2 安装 PHP绑定
查看>>
JQuery实现简单的服务器轮询效果
查看>>
幽灵漏洞(GHOST)影响大量Linux操作系统及其发行版(更新修复方案)
查看>>
Sunday算法
查看>>