[BZOJ1782] [Usaco2010 Feb]slowdown 慢慢游

2024-01-09 13:00

本文主要是介绍[BZOJ1782] [Usaco2010 Feb]slowdown 慢慢游,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=1782

题目大意

给定一棵n个点的树,每次从1出发到达a[i],询问到达a[i]之后,经过了几个之前已经到达的点

题解

简单画下图我们就能发现,每次走完就相当于给a[i]的子树权值(之后到达某个点的答案)+1,为了维护这个,我们用DFS序把子树维护到一条线段上,来回答每次询问
我们需要支持区间修改,单点查询的数据结构,很明显线段树可以,但是我想介绍一下树状数组的写法
树状数组我们知道只能单点修改,区间查询(前缀和),所以这里我们用到差分序列来维护,对于[L,R],单点修改L节点使其加一,R+1节点减一

constmaxn=100010;
vary:array[0..maxn,1..2]of longint;t,x,z:array[0..maxn]of longint;w:array[0..4*maxn,1..2]of longint;i,j,k:longint;n,len,a,b,ans:longint;
procedure init(a,b:longint);
beginw[len,1]:=b;if w[a,2]=0then w[a,2]:=len else w[w[a,1],2]:=len;w[a,1]:=len; inc(len);
end;procedure dfs(a:longint);
var tt:longint;
begininc(len); y[a,1]:=len; z[a]:=len;tt:=w[a,2];while tt<>0 dobegink:=y[w[tt,1],1];if y[w[tt,1],1]=0then dfs(w[tt,1]);tt:=w[tt,2];end;y[a,2]:=len;
end;procedure update(a,b:longint);
beginwhile a<=n dobegininc(t[a],b);inc(a,a and(-a));end;
end;function query(a:longint):longint;
var k:longint;
begink:=0;while a>0 dobegininc(k,t[a]);dec(a,a and(-a));end;exit(k);
end;beginreadln(n); len:=n+1;for i:=1 to n-1 dobeginreadln(a,b);init(a,b); init(b,a);end;for i:=1 to n doreadln(x[i]);len:=0;dfs(1);for i:=1 to n dobeginans:=query(z[x[i]]);update(y[x[i],1],1); update(y[x[i],2]+1,-1);writeln(ans);end;
end.

这篇关于[BZOJ1782] [Usaco2010 Feb]slowdown 慢慢游的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587192

相关文章

慢慢的我开始意识到,做确定性的事只能收获确定性的成长

引言 在我们日常的工作和生活中,确定性似乎是一种安全感的象征。无论是按时上下班,完成领导分配的任务,还是依靠固定的薪水生活,这些都给我们带来一种暂时的安宁。然而,当我们渴望突破、寻求更大的成长时,这种确定性却成为了最大的束缚。 这篇文章将以一个科技公司的真实案例为背景,解析为何仅仅依赖固定的任务和稳定的工作,无法实现个人和职业的突破性成长。我们将借鉴Rob Walling的文章《从开发者到

6款大学生电脑里的必装软件,装进电脑慢慢用

分享6款大学生爱用的windows软件,个个功能强大,装进电脑能提升效率,让大学生活更轻松! 1、Everything 大学四年怎么都得积攒下一堆PPT和文档,日子久了存放的乱七八糟,想找的时候一个头两个大。这时候Everything就能派上用场了。 虽然它只有1.3MB大小,但能快速搜遍你电脑里的所有文件和文件夹,连那些TB级别的硬盘都不在话下。而且,它还能实时监控文件的变动哦!在Windo

十大算法.(只看懂了一部分,留下来慢慢体会吧)

快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个

常量池、栈、堆的比较(慢慢消化)

原文链接:http://www.cnblogs.com/Eason-S/p/5658230.html JAVA中,有六个不同的地方可以存储数据: 1.寄存器:最快的存储区,位于不同于其他存储区的地方——处理器内部。寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 2. 栈:存放基本类型的变量数据和对象的引

【bzoj1827】[Usaco2010 Mar]gather 奶牛大集会 贪心 树规

题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场。道路i连接农场A_i和B_i(1 <= A_i <=N; 1 <= B_i <= N),长度为L_i(1 <= L_i <= 1,

大牛的博客留着慢慢看,关于sqlite

http://www.cnblogs.com/hustcat/archive/2010/06/23/1762987.html http://database.ctocio.com.cn/tips/272/7588272.shtml

借鉴别人的pdo类,慢慢研究

<?php /**   * PDO封装类,目的是为了使用起来更简单方便   * modify Date: 2014-07-01   */ class  PDOX {      private  $pdo         = null;            public   $statement  = null;

网课:第四章二分、三分、01分数规划---[USACO 2010 Feb S]Chocolate Eating

题目 贝西收到了N(1 <= N <= 50,000)块巧克力,但她不想吃得太快,因此她想为接下来的D(1 <= D <= 50,000)天制定巧克力食用计划,以便在那些天中最大化她的最低幸福水平。 贝西的幸福水平是一个整数,起始值为0,在夜间睡觉时减半(如果必要的话向下取整)。然而,当她吃掉第i块巧克力时,她的幸福水平增加了整数 Hi (1 <= Hi <= 1,000,000)。如果她在一天

汇昌联信电商:拼多多新手怎么做店铺的免费流量会慢慢起来?

在拼多多上开店,新手们往往面临着如何吸引免费流量的挑战。毕竟,流量是店铺生存和发展的血脉,没有流量,就没有销量,店铺也就失去了生命力。那么,作为拼多多新手,如何做才能让店铺的免费流量慢慢起来呢?这是一个值得深思的问题。   一、选品策略   首先,我们要明确的是,产品是吸引流量的基础。因此,新手们在开店初期,一定要做好市场调研,选择有市场需求、竞争度适中的产品。同时,产品的质量和价格也

bzoj1593[Usaco2008 Feb]Hotel旅馆

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1593 题目大意: 有一家著名旅馆,这家旅馆一共有N 间客房,都在同一楼层,一字顺序排开。旅店前台的工作是忙碌的,他们需要处理订房请求和退房请求。有订房请求的游客会要求预定一 段连续的房间。如果能够满足客户的要求,前台总会尽量满足,如果有多处连续的空房可供预定,前台会挑选编号最靠前的优先