T1枚举一下先打哪个怪,计算一下答案即可。T2考虑博弈dpf[i]表示当前位置为i是否必胜。f[i]=1当且仅当存在j满足j(前面有一个可以转移到的必败态)暴力实现这个dp是O(n^2)的显然可以通过维护i之前的a[j]最小的必败态优化为O(1)转移总复杂度O(n)T3考虑去计算每一个“mhy”对答案的贡献考虑枚举h字符所在的节点则该字符会和它的一个字符为m的相邻节点a和另外一个字符为y的相邻节点b构成一个mhy考虑有多少条链会包含这个mhy显然是sz[a]*sz[b] (sz[x]表示子树x的大小)因此这个节点的贡献就是∑ ∑sz[a]*sz[b] = ∑sz[a] * ∑sz[b]因此只需要计算出每个h节点的所有相邻的m节点的sz之和 和 所有相邻的y节点的sz之和然后乘起来加到答案中就可了总复杂度O(n)