省选模拟76 题解

A. MiniumCut

首先看到这个题,可以想到最小割树。

然后发现原图的最小割树与原图是等价的。

那也就是说,答案可以表示为一个树。

然后考虑如何求出来这个树。大概的思路就是由小到大考虑每一组关系或者由大到小考虑每一组关系。

这里用后一种思路,大概套用一下类似克鲁斯卡尔重构树的思想,然后发现这些关系的最大生成树就是最小割树。

然后暴力判断一下是否合法,这题就解决了。

B. Tree

容易发现答案就是选择一个点集。

对于点集中的所有边,可以选择一条路径使得系数为 $1$,其他系数均为 $2$。

所以就写一个子树归并 dp ,记录子树中选择的点的个数、子树中已经出现了多少个端点就行了。

C. 塔

想这道题的时候发现,原来回文树是可以简单的支持双端插入的。

其实只要维护双端分别的终止节点。

然后对于右端点拓展,能改变左端点的终止节点仅当整个串是回文串,所以特别判断一下就好了。

然后通过回文树的做法大概可以想到,对于字符串每次拓展,答案的变化量在 $0$ 到 $2$ 之间。

所以只要弄个哈希分别判断答案增加 $2,1$ 是否合法就好了。

原文地址:https://www.cnblogs.com/skyh/p/12748244.html