BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap
题目描述

输入
输出
样例输入
1 4
5 4
1 3
2 4
4
2
1
5
3
样例输出
1
0
2
1
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int x,y;
int tot;
int root;
int a[100010];
int s[100010];
int r[300010];
int v[300010];
int g[100010];
int to[200010];
int ls[300010];
int rs[300010];
int head[100010];
int next[200010];
int size[300010];
void add(int x,int y)
{
tot++;
next[tot]=head[x];
head[x]=tot;
to[tot]=y;
}
void up(int x)
{
size[x]=size[rs[x]]+size[ls[x]]+1;
}
void rturn(int &x)
{
int t;
t=ls[x];
ls[x]=rs[t];
rs[t]=x;
size[t]=size[x];
up(x);
x=t;
}
void lturn(int &x)
{
int t;
t=rs[x];
rs[x]=ls[t];
ls[t]=x;
size[t]=size[x];
up(x);
x=t;
}
void insert_sum(int x,int &i)
{
if(!i)
{
i=++tot;
size[i]=1;
v[i]=x;
r[i]=rand();
return ;
}
size[i]++;
if(x>v[i])
{
insert_sum(x,rs[i]);
if(r[rs[i]]<r[i])
{
lturn(i);
}
}
else
{
insert_sum(x,ls[i]);
if(r[ls[i]]<r[i])
{
rturn(i);
}
}
return ;
}
void delete_sum(int x,int &i)
{
if(i==0)
{
return ;
}
if(v[i]==x)
{
if((ls[i]*rs[i])==0)
{
i=ls[i]+rs[i];
}
else if(r[ls[i]]<r[rs[i]])
{
rturn(i);
delete_sum(x,i);
}
else
{
lturn(i);
delete_sum(x,i);
}
return ;
}
size[i]--;
if(v[i]<x)
{
delete_sum(x,rs[i]);
}
else
{
delete_sum(x,ls[i]);
}
return ;
}
int ask_num(int x,int i)
{
if(i==0)
{
return 0;
}
if(v[i]==x)
{
return size[ls[i]]+1;
}
if(v[i]<x)
{
return ask_num(x,rs[i])+size[ls[i]]+1;
}
return ask_num(x,ls[i]);
}
void dfs(int x,int fa)
{
for(int i=head[x];i;i=next[i])
{
if(to[i]!=fa)
{
g[s[to[i]]]=ask_num(s[to[i]],root);
insert_sum(s[to[i]],root);
dfs(to[i],x);
delete_sum(s[to[i]],root);
}
}
}
int main()
{
srand(12378);
scanf("%d",&n);
for(int i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
s[a[i]]=i;
}
insert_sum(s[1],root);
g[s[1]]=0;
dfs(1,1);
for(int i=1;i<=n;i++)
{
printf("%d\n",g[i]);
}
}
BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap的更多相关文章
- [USACO 2018 Feb Gold] Tutorial
		Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bit ... 
- NC24724 [USACO 2010 Feb S]Chocolate Eating
		NC24724 [USACO 2010 Feb S]Chocolate Eating 题目 题目描述 Bessie has received \(N (1 <= N <= 50,000)\ ... 
- [ USACO 2010 FEB ] Slowing Down
		\(\\\) \(Description\) 给出一棵 \(N\) 个点的树和 \(N\) 头牛,每头牛都要去往一个节点,且每头牛去往的点一定互不相同. 现在按顺序让每一头牛去往自己要去的节点,定义一 ... 
- [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】
		传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ... 
- BZOJ1577  USACO 2009 Feb Gold 1.Fair Shuttle Solution
		权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ... 
- Usaco 2010 Dec Gold Exercise(奶牛健美操)
		/*codevs 3279 二分+dfs贪心检验 堆版本 re一个 爆栈了*/ #include<cstdio> #include<queue> #include<cst ... 
- BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution
		标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ... 
- bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch
		Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ... 
- BZOJ1828[USACO 2010 Mar Gold 2.Barn Allocation]——贪心+线段树
		题目描述 输入 第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数C_i * 第N+2到N+M+1行: 第i+N+1行表示2个整数 A_i和B_i 输出 * 第一行: ... 
随机推荐
- 学习CSS布局 - box-sizing
			box-sizing 人们慢慢的意识到传统的盒子模型不直接,所以他们新增了一个叫做 box-sizing 的CSS属性. 当你设置一个元素为 box-sizing: border-box; 时,此元素 ... 
- OOM异常的4种可能分析
			OOM异常:OutOfMemoryError 1.JAVA堆溢出 JAVA堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到这些对象之间有路径可以来避免垃圾回收机制清除这些对象,那么在 ... 
- NOIP2002-2017提高组题解
			给个人认为比较难的题目打上'*' NOIP2002(clear) //一个很吼的贪心题,将平均数减掉之后从左往右将影响消除 #include<bits/stdc++.h> using na ... 
- Ionic下的Jpush消息推送与内容显示
			本文测试Jpush将消息推送给手机端,手机端点击通知栏,即可看到具体的推送内容. 1.极光推送消息设置 设置附加字段: 点击发送,手机端收到消息通知. 2.手机接收到的消息通知 点击之后进入具体的页面 ... 
- ORA-00020:maximum number of processes (150) exceeded
			异常的含义 超过最大的进程数 我们使用下面的语句可以查看与进程(process)的相关参数: 如上所示,这里的最大进程数是150. 问题可能存在的原因 1.应用程序在使用数据库连接池时,使用完成后没有 ... 
- 算法相关——Java排序算法之快速排序(三)
			0. 前言 本系列文章将介绍一些常用的排序算法.排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个" ... 
- [Spark][Python]DataFrame select 操作例子
			[Spark][Python]DataFrame中取出有限个记录的例子 的 继续 In [4]: peopleDF.select("age")Out[4]: DataFrame[a ... 
- JQuery如何实现双击事件时不触发单击事件
			单击和双击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown, ... 
- 快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求
			本文快速分享一下快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求的方法,供大家参考. 原文发表于我的技术博客 零配置方案 最新的苹果审核政策对 API 的 IPv6 以及 ... 
- mysql启动后随即关闭问题解决(ibdata1文件损坏导致)
			机房一台服务器上的mysql运行一段时间了,突然出现了一个很奇怪的现象:重启后无法恢复了!准确情况是:启动mysql后随即就又关闭了. 查看mysql错误日志如下: 160920 22:41:41 m ... 
