省选模拟48

T1.

  前缀的最长公共后缀就是两个长度在sam上对应的节点的lca的len,所以可以对于每个lca考虑。

  在每个lca处考虑当前长度的贡献,发现最优秀的解一定发生在两个相邻的下标之间。

  所以直接启发式合并,然后离线处理询问就行了。

T2.

  可以发现题目中对于点的要求就是重心。

  也就是说,一个点不能有大小大于$n/2$的子树,可以发现这样的子树一定在重心方向。

  然后可以发现,删掉这个点到重心路径上的点一定是无效的,因为剩余子树大小仍然大于$n/2$。

  所以删掉的边只可能是重心周围的边,那么只要贪心选取大小最大的子树即可。

T3.

  可以发现对于环中的点只要确定一个点就可以确定剩余所有点。

  所以只要找到所有环对于每个环定向就行了。

  然而直接跑会死。考虑对于大小为2的环,最优解显然是左括号在前,所以最小环的大小是4,总复杂度就合法了。

posted @ 2020-03-17 21:22  tdcp  阅读(106)  评论(0编辑  收藏  举报