这么水的比赛 lxr 咋都没阿克啊。
这道题不会做/kel
直接输出 \(98901234567890123456789012345678901234\cdots\)。
直接枚举修改的位置和修改成的值与两边的相对大小关系即可。
这题还算有点意思,想了我好长时间。
最终的值显然可以表示成每个数乘上一个 \(\pm1\) 的贡献。
首先所有的数的贡献系数都是 \(1\) 是不可能的。我们考虑分两种情况决策:
最后取个 \(\min\)。
我们考虑计算出每个位置对答案的贡献系数。那么显然修改啥的有手就行了。
我们考虑让第 \(0\sim m\) 的每一步都对每个位置的贡献做出贡献。这是 \(\mathrm O(nm)\) 的。那么贡献值显然就是在该步穿过该位置的 good path 数量。
这个可以乘法原理分解一下,分成左边一部分和右边一部分,就是求长度为若干的以该位置结尾 / 开头的 good path 数量。这是个很显然的 \(\mathrm O(nm)\) DP,每一步就往前一步的该位置 \(\pm1\) 转移即可。然后左边和右边是镜像的,只需要 DP 一遍即可。
没啥难度的套路题一道。
注意到对于任意一个点,它满足条件当且仅当,若以它为根的话,那么没有颜色相同的祖先后代对。
那么很自然的想到换根,实时维护当前颜色相同的祖先后代对个数(注意要开 ll
)。
首先求出初始值。我们考虑换一次根这个值会有什么变化。
考虑所有点对。如果点对在老根和新根的子树中的同一个的话,那关系显然不变。然后如果是不同的,并且两个都不是老根或新根,那显然也不变。于是只需要考虑新根子树对老根的贡献和老根子树对新根的贡献即可。这个只需要一开始离散化一下,装个桶,然后在 dfs 序上二分即可。
复杂度线对。有时候研究线性做法也是没啥意义的。
原文:https://www.cnblogs.com/ycx-akioi/p/sol-cf1467.html