<title head>页面背景图片</title head> </head> <body background="‪F:\5d55

【1】中我们学习了树上差分并苴a了一个裸的点差分. 现在继续树上差分~

松鼠的新家是一棵树,前几天刚刚装修了新家新家有n个房间,并且有n-1根树枝连接每个房间都可鉯相互到达, 且俩个房间之间的路线都是唯一的天哪,他居然真的住在”树“上 松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南他希望维尼能够按照他的指南顺序,先去a1再去 a2,......最后到an,去参观新家可是这样会导致维尼重复走很多房间,懒惰的维尼不停哋推辞可是松鼠告 诉他,每走到一个房间他就可以从房间拿一块糖果吃。 维尼是个馋家伙立马就答应了。现在松鼠希望知道为了保證维尼有糖果吃他需要在每一个房间各放至少多少个糖果。 因为松鼠参观指南上的最后一个房间an是餐厅餐厅里他准备了丰盛的大餐,所以当维尼在参观的最后到达餐厅时就不需要再拿糖果吃了 第一行一个整数n,表示房间个数第二行n个整数依次描述a1-an 接下来n-1行,每行两個整数xy,表示标号x和y的两个房间之间有树枝相连 一共n行,第i行输出标号为i的房间至少需要放多少个糖果才能让维尼有糖果吃。

显然小熊维尼的路线是 a1—a2、a2—a3、…a_{n-1}–an, 这些都是树上路径. 树上路径会造成一些树上节点的覆盖. 只需差分完毕之后dfs一波即可~ 但是注意,an这个点不需要放置糖果的意思是最后到达an的时候不需要吃糖果了但是中途其他边可能路过an, 还是要放糖果的~ 所以最后 b[an]-- 即可. 但是从ai(i>1)到a\_{i+1} a[i]是不需要再放糖果的. 所以只要i不等于a[1](特别的, an 就不等于a[1]), 最后dfs完了之后就要自减1, 只是an和其他a[2,…,n-1]自减的原因不一样, an是因为最后不需要准备糖果,而a[i= 2,…,n-1]自減1是因为从ai出发不再需要放糖果.

我要回帖

更多关于 title head 的文章

 

随机推荐