博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4756 [Usaco2017 Jan]Promotion Counting——线段树合并
阅读量:6654 次
发布时间:2019-06-25

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

题目:

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

#include
#include
#include
#include
using namespace std;const int N=1e5+5,M=N*17*5;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=0;bool fx=1;char ch=getchar(); while(ch>'9'||ch<'0'){
if(ch=='-')fx=0;ch=getchar();} while(ch>='0'&&ch<='9')ret=(ret<<3)+(ret<<1)+ch-'0',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 0;if(l>=L&&r<=R)return siz[cr]; int mid=l+r>>1,ret=0; if(mid>=L)ret=query(l,mid,ls[cr],L,R); if(mid
>1; if(mid>=p) insert(l,mid,ls[cr],p); else insert(mid+1,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(1,m,rt[cr],a[cr],m); insert(1,m,rt[cr],a[cr]);}int main(){ n=rdn(); for(int i=1;i<=n;i++)a[i]=tp[i]=rdn(); sort(tp+1,tp+n+1); m=unique(tp+1,tp+n+1)-tp-1; for(int i=1;i<=n;i++)a[i]=lower_bound(tp+1,tp+n+1,a[i])-tp; for(int i=2,d;i<=n;i++) { d=rdn(); add(d,i); } dfs(1); for(int i=1;i<=n;i++)printf("%d\n",ans[i]); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9803966.html

你可能感兴趣的文章
Servlet中ServletConfig和ServletContext漫谈
查看>>
为那些在职准备考IE的兄弟们做个参考-乾颐堂张IE执笔
查看>>
JQ中 $(document).scrollTop()、$('html').scrollTop()、 $(window).scrollTop()区别
查看>>
我的友情链接
查看>>
令人眼前一亮的下拉式终端 Tilda & Guake
查看>>
Python - 元组(tuple) 详解 及 代码
查看>>
AsynchronousSocketChannel
查看>>
IE6尾部重复字符bug , IE6下产生多余字符的BUG
查看>>
ruby学习笔记-基础数据类型
查看>>
湖南省第八届大学生计算机程序设计竞赛试题 题目A 三家人 (未测试)
查看>>
我的友情链接
查看>>
【小松教你手游开发】【unity实用技能】unity ios快捷打包
查看>>
caffe编译的问题解决:“cublas_v2.h: No such file or directory”
查看>>
40岁后才明白的道理:人一生奋斗余地很有限
查看>>
正则符号整理
查看>>
Asp.net core 二级域名的设置
查看>>
es 字段 replace
查看>>
Oracle Study之案例--延迟块清除(deferred block cleanout)
查看>>
【LAMP】03、构建分离式的LAMP
查看>>
大快DKhadoop大数据处理平台详解
查看>>