bzoj 1782: [Usaco2010 Feb]slowdown 慢慢游【dfs序+线段树】
考虑每头牛到达之后的影响,u到达之后,从1到其子树内的点需要放慢的都多了一个,p为u子树内点的牛ans会加1
用线段树维护dfs序,每次修改子树区间,答案直接单点查询p即可
#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int n,p[N],h[N],cnt,in[N],out[N],tot;
struct qwe
{
	int ne,to;
}e[N<<1];
struct xds
{
	int l,r,s,lz;
}t[N*3];
int read()
{
	int r=0,f=1;
	char p=getchar();
	while(p>'9'||p<'0')
	{
		if(p=='-')
			f=-1;
		p=getchar();
	}
	while(p>='0'&&p<='9')
	{
		r=r*10+p-48;
		p=getchar();
	}
	return r*f;
}
void add(int u,int v)
{
	cnt++;
	e[cnt].ne=h[u];
	e[cnt].to=v;
	h[u]=cnt;
}
void dfs(int u,int fa)
{
	in[u]=++tot;
	for(int i=h[u];i;i=e[i].ne)
		if(e[i].to!=fa)
			dfs(e[i].to,u);
	out[u]=tot;
}
void pd(int ro)
{
	if(t[ro].lz>0)
	{
		t[ro<<1].lz+=t[ro].lz;
		t[ro<<1].s+=t[ro].lz*(t[ro<<1].r-t[ro<<1].r+1);
		t[ro<<1|1].lz+=t[ro].lz;
		t[ro<<1|1].s+=t[ro].lz*(t[ro<<1|1].r-t[ro<<1|1].r+1);
		t[ro].lz=0;
	}
}
void build(int ro,int l,int r)
{
	t[ro].l=l,t[ro].r=r;
	if(l==r)
		return;
	int mid=(l+r)>>1;
	build(ro<<1,l,mid);
	build(ro<<1|1,mid+1,r);
}
int ques(int ro,int p)
{
	if(t[ro].l==t[ro].r)
		return t[ro].s;
	pd(ro);
	int mid=(t[ro].l+t[ro].r)>>1;
	if(p<=mid)
		return ques(ro<<1,p);
	else
		return ques(ro<<1|1,p);
}
void update(int ro,int l,int r)
{
	if(t[ro].l==l&&t[ro].r==r)
	{
		t[ro].lz++;
		t[ro].s+=(t[ro].r-t[ro].l+1);
		return;
	}
	pd(ro);
	int mid=(t[ro].l+t[ro].r)>>1;
	if(r<=mid)
		update(ro<<1,l,r);
	else if(l>mid)
		update(ro<<1|1,l,r);
	else
		update(ro<<1,l,mid),update(ro<<1|1,mid+1,r);
	t[ro].s=t[ro<<1].s+t[ro<<1|1].s;
}
int main()
{
	n=read();
	for(int i=1;i<n;i++)
	{
		int x=read(),y=read();
		add(x,y),add(y,x);
	}
	for(int i=1;i<=n;i++)
		p[i]=read();
	dfs(1,0);
	build(1,1,n);
	for(int i=1;i<=n;i++)
	{
		printf("%d\n",ques(1,in[p[i]]));
		update(1,in[p[i]],out[p[i]]);
	}
	return 0;
}
bzoj 1782: [Usaco2010 Feb]slowdown 慢慢游【dfs序+线段树】的更多相关文章
- [bzoj 1782] [Usaco2010 Feb]slowdown慢慢游
		[bzoj 1782] [Usaco2010 Feb]slowdown慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N)从 ... 
- BZOJ 1782: [Usaco2010 Feb]slowdown 慢慢游( BIT + dfs )
		orz...hzwer 对着大神的 code 看 , 稍微理解了. 考虑一只牛到达 , 那它所在子树全部 +1 , 可以用BIT维护 --------------------------------- ... 
- 1782: [Usaco2010 Feb]slowdown 慢慢游
		1782: [Usaco2010 Feb]slowdown 慢慢游 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 570 Solved: 346[Sub ... 
- 【BZOJ】1782: [Usaco2010 Feb]slowdown 慢慢游
		[算法]DFS序+树状数组 [题解]题意相当于统计前i-1个点在第i个点的祖先的个数,显然可以用dfs维护,用树状数组差分维护前缀和. 出栈不新加节点就要注意左闭右开,即in[a[i]]处+1,ou[ ... 
- BZOJ1782: [Usaco2010 Feb]slowdown 慢慢游
		1782: [Usaco2010 Feb]slowdown 慢慢游 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 541 Solved: 326[Sub ... 
- 树状数组【bzoj1782】: [Usaco2010 Feb]slowdown 慢慢游
		[bzoj1782]: [Usaco2010 Feb]slowdown 慢慢游 Description 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1-N) ... 
- BZOJ 1782 洛谷 2982 [Usaco2010 Feb]slowdown 慢慢游
		[题解] 一头牛走到i,相当于把i点的子树的点权都加1,查询减慢的次数就是查询目的地的点权. 预处理dfs序,某个点的子树的dfs序是连续的一段.差分后用树状数组维护,变成点修区查.或者直接线段树区修 ... 
- 【bzoj1782】[Usaco2010 Feb]slowdown 慢慢游  树链剖分+线段树
		题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ... 
- 【洛谷2982】[Usaco2010 Feb]慢下来Slowdown(dfs序+线段树)
		题目: 洛谷2982 分析: 这道题最重要的是想明白一点:牛\(i\)走到以后只对\(P_i\)的子树产生影响 知道这个以后,就可以想到在线维护每个牧场已经被"影响"了多少次(也就 ... 
随机推荐
- C#上位机开发(四)—— SerialAssistant功能完善
			上一篇中我们完成了一个串口助手的雏形,实现了基本发送和接收字符串功能,并将打开/关闭串口进行了异常处理,这篇就来按照流程,逐步将功能完善: 1.构思功能 首先是接收部分,要添加一个“清空接收”的按钮来 ... 
- iPhone安装ipa的方法(iTunes,PP助手)
			1,通过iTunes: 将手机与电脑通过数据线连接,打开电脑中的iTunes,将ipa文件添加到资料库(ipa文件是iTunes能够识别的文件),方式如下图,然后安装,同步即可. 2,通过PP助手: ... 
- ProxySQL Tutorial : setup in a MySQL replication topology
			ProxySQL Tutorial : setup in a MySQL replication topology 时间 2015-09-15 05:23:20 ORACLE数据库技术文刊 原文 h ... 
- noip模拟赛 蒜头君的兔子
			分析:直接暴力算有30分,像斐波那契那样推式子算有60分,如果想要得到100分就要用一种数列题的常见优化--矩阵了. 当前的兔子数和十年内的兔子数有关,我们需要1个1*11的矩阵,来记录当前为0岁.1 ... 
- 创建Django项目(七)——表单
			2013-08-15 19:43:01| 1.URL配置和视图 "blog\urls.py"文件中:添加url(r'write_article/$', 'write ... 
- 使用idea编译spring-framework5.0源码
			自从迈入java开发这个行当,从来没有好好的研究过源码,深感惭愧,话不多说,今天上一篇使用idea编译spring5.0源码. 以下在win中构建和编译过程分为 jdk环境的配置 gradle的下载和 ... 
- easyui  datagrid-detailview 嵌套高度自适应
			实现效果 原因 异步加载,明细展开时,可能会遇到父列表不能自动适应子列表高度的变化 具体代码 $('#centerdatagrid').datagrid({ url:'${ctx}/offer/off ... 
- TensorFlow-GPU环境配置之四——配置和编译TensorFlow
			首先,使用configure进行配置 配置完成后,使用bazel编译retrain命令,编译命令中加入--config=cuda即为启用GPU 编译进行中... 编译完成 编译完成后,调用retrai ... 
- weblogic自带的jdk是在工程的包部署后编译使用
			weblogic自带的jdk是在工程的包部署后编译使用的.当用户把项目打包部署到weblogic上面,运行该项目的java环境jdk就是用的weblogic自带的jdk了,工程中的jdk和编译时的jd ... 
- javascript statically scope
			在javascript 里面, 函数中使用的未定义的变量,会默认变为全局的变量. 而通过 var 这个关键字定义的变量,就是局部变量. As far as the output is concerne ... 
