码迷,mamicode.com
首页 > 其他好文 > 详细

【考试】10.2

时间:2019-10-05 00:27:44      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:估计   没有   一段   image   idt   维护   dfs   info   一个   

1>保卫王国

 

一棵树,有点权,

树上一条边上要求至少一个点被选,

现在有好多个询问,要求一个点被选,或者没有被选

求问每个询问的最小代价

技术图片

 

(1)很明显的树形dp,

简单的暴力,对每次询问,求一次dp,用dfs

复杂度O(nm)

前11个点,44分

 

(2)优化dp

因为m优化不得,离线也没什么用,

所以,估计最终的复杂度应该是O(mlogn)

再画一棵树,发现每次影响的其实只有x到y这一段中的dp,

(当然相邻节点有一点...影响)

我们把要更新的部分分成三部分:

设两个点为u,v,t=LCA(u,v)

三部分为:

1.从u到t

2.从v到t

3.从t到root

设f[0/1][0/1][i][u ]表示u不选/选,u往上跳2^i步的祖先不选/选时,从u开始dp到那个祖先的答案。

(倍增维护)

 

【考试】10.2

标签:估计   没有   一段   image   idt   维护   dfs   info   一个   

原文地址:https://www.cnblogs.com/xwww666666/p/11623712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!