题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4756

线段树合并裸题。那种返回 int 的与传引用的 merge 都能过。不知别的题是不是这样。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+,M=N**;
int n,m,a[N],tp[N],rt[N],hd[N],xnt,to[N],nxt[N],ans[N];
int tot,ls[M],rs[M],siz[M];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
void add(int x,int y)
{
to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
} void merge(int &x,int y)
{
if(!x){x=y;return;}
siz[x]+=siz[y];
if(ls[y])merge(ls[x],ls[y]);
if(rs[y])merge(rs[x],rs[y]);
}
/*
int merge(int x,int y)
{
if(!x||!y)return x+y;
int d=++tot;
siz[d]=siz[x]+siz[y];
ls[d]=merge(ls[x],ls[y]);
rs[d]=merge(rs[x],rs[y]);
return d;
}
*/
int query(int l,int r,int cr,int L,int R)
{
if(!cr)return ;if(l>=L&&r<=R)return siz[cr];
int mid=l+r>>,ret=;
if(mid>=L)ret=query(l,mid,ls[cr],L,R);
if(mid<R)ret+=query(mid+,r,rs[cr],L,R);
return ret;
}
void insert(int l,int r,int &cr,int p)
{
if(!cr)cr=++tot; siz[cr]++;
if(l==r)return; int mid=l+r>>;
if(mid>=p) insert(l,mid,ls[cr],p);
else insert(mid+,r,rs[cr],p);
}
void dfs(int cr)
{
for(int i=hd[cr],v;i;i=nxt[i])
dfs(v=to[i]),/*rt[cr]=*/merge(rt[cr],rt[v]);
ans[cr]=query(,m,rt[cr],a[cr],m);
insert(,m,rt[cr],a[cr]);
}
int main()
{
n=rdn(); for(int i=;i<=n;i++)a[i]=tp[i]=rdn();
sort(tp+,tp+n+); m=unique(tp+,tp+n+)-tp-;
for(int i=;i<=n;i++)a[i]=lower_bound(tp+,tp+n+,a[i])-tp;
for(int i=,d;i<=n;i++)
{
d=rdn(); add(d,i);
}
dfs();
for(int i=;i<=n;i++)printf("%d\n",ans[i]);
return ;
}

最新文章

  1. python遍历一个网段的ip地址
  2. iOS 事件传递响应链
  3. TextView显示颜色高亮的问题
  4. Android开发:第四日番外——Assets文件夹和RAW文件夹区别
  5. POJ3283+字典树
  6. 自定义标签 tld
  7. Cadence 信号完整性(一)-- 仿真步骤3
  8. 【转】Java集合框架List,Map,Set等全面介绍
  9. shell 死循环
  10. Python多进程并发(multiprocessing)用法实例详解
  11. JFFS2 文件系统及新特性介绍
  12. [BZOJ1606] [Usaco2008 Dec] Hay For Sale 购买干草 (dp)
  13. Java通过遍历sessionId获取服务器所有会话session
  14. socket的同步异步的性能差别,以及listen的参数backlog
  15. MVC删除操作前confirm提示
  16. Access与SQL Server 语法差异
  17. Making the Grade---poj3666(dp)
  18. mysql数据库数据监测
  19. MySQL死锁原因分析
  20. 框架 Hibernate 2

热门文章

  1. IDG | 四则运算表达式计算
  2. EasyHook库系列使用教程之四钩子的启动与停止
  3. C 标准库 - &lt;stdarg.h&gt;
  4. PNG24图片兼容IE6解决的方法
  5. 修改host文件原理 localhost,127.0.0.1之间有什么区别
  6. hadoop集群ambari搭建(2)之制作hadoop本地源
  7. URL 截取参数 正则
  8. 多媒体开发之编码gop---什么是GOP
  9. 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
  10. Mvc之Ajax上传图片