9.11集训
第一个 软件安装 是一个树形dp加tarjan缩点
注意缩点完成之后建立新图的时候,要与跟连边
第二个 股票交易
如果不优化的话,上来一大堆讨论
其中发现有两种情况可以用单调队列来优化
第三个 消耗战
是一个虚树+树形dp
这个树形dp很好写,但是虚树不好搞
大致思想:每次询问,我们如果对原树进行遍历的话,复杂度过高,无法接受
考虑将其中有用的点搞出来,我们遍历的时候,对这些点遍历即可,可大大缩减时间复杂度
考虑如何构建虚数:
构建一个栈,在不断弹栈的过程就是建立虚树的过程(先按照dfn序排序,防止反复跳
当前:sta[1] = root, sta[top]
新加进来一个x,考虑x与原来sta[top]的影响,对他俩求一个lca,如果lca为sta[top],直接加进来就可以了
如果不是的话,大力讨论