AT_agc073_a [AGC073A] Chords and Checkered
题解
自己手画几组,没添加一条线其实就是把穿过的区域复制添加一份颜色反转的,一块区域如果是黑的,一定是被奇数条线覆盖。我们将其拆成两部分,第一部分是只有一条线围成的区域个数,这个很好求,一条线会贡献一个答案,这条线会成为贡献的方案数一共有 \(2^{n-1}\) 种,所以之一部分答案就是 \(n2^n\)。另一部分是多条线围成的,我们发现任意一对相交但不相邻的弦,这两个弦参与围成的区域如果内部有还有奇数条弦,那么这部分区域就有贡献,于是对于一对这样的弦的贡献就是 \(2^{n-3}\) (出现这种的方案数钦定了这对弦必须选,内部弦的个数是奇数的方案数显然正好占一半)。我们只需要统计一下相交但是不相邻的弦的对数 \(cnt\),那么最终答案其实就是 \(n2^n+cnt2^{n-3}\)。时间复杂度 \(O(n)\)。
AT_agc073_b [AGC073B] Cyclic Jump
题解
令 \(f(a_1,a_2,a_3...)\) 是数组 \(a\) 的答案(\(a\) 自动排序了,以后谈及 \(f\) 函数里面的数组默认有序)。我们注意到有 \(f(a_1,a_2+a_1,a_3+a_1...a_n+a_1)=a_1+f(a_1,a_2,a_3...a_n)\)。考虑证明如下:
首先先证明左面小于等于右面:
对于右边 \(f\) 的一个构造方案,左边就是把所有的 \(a_2~a_n\) 替换成 \(a_2+a_1~a_n+a_1\) 然后立刻减去 \(a_1\)(反过来跳的时候如果会变成负数也不用担心,先加 \(a_1\) 再减 \(a_i-a_1\)就行了),这样的话每次操作完最多比之前的值大了 \(a_1\)。所以得证。
接下来证明右面小于等于左面:
对于左面的任意一个构造,贪心来讲能减我一定会提前做减法,所以对于每一次减号,就是在做减法之前必然是一个加法,把这两个对应的数字都减去 \(a_1\)是可行的,和原来方案没有区别,序列中达到最大值的下一次肯定是减法,但现在每次减号的加法对应的数值都已经 \(-a1\) 了,所以这是一个最大值 \(-a1\) 的构造。
于是我们证明出这个结论,这是一个类似更相减损的东西,改成辗转相除的形式就过了,时间复杂度 \(O(n\log n)\)。
AT_agc073_c [AGC073C] Product of Max of Sum of Subtree
题解
我们先考虑一种特殊情况,就是这棵树的每个点的 \(x\) 值最后都相同(令这个值为 \(f\),当然有 \(0\le f\le1\))的情况,我们令这个数的大小为 \(sz\),点 \(i\) 的子树权值和是 \(s_i\)。首先显然 \(s_1=f\),所有节点的和就是每个点的 \(x\),不然不可能都相同,其次如果是这样那么不会出现一个点 \(i\),使得 \(s_i<0\) (显然劣不会被取到,这样就不是每个点的答案就是所有节点和了)。所以只要让 \(s_1=f\),其他的 \(s\) 在 \([0,f]\) 中任意取,都是一定合法的(无论怎么取都可以通过设置对应的点权都能使之变为合法方案,最极端情况也是一个菊花图,所有点 \(s\) 的取值都是 \(f\),这时 \(1\) 号点的取值,也是 \(-(n-1)f\) 显然这个数是在取值范围内)。于是我们就能对于每一个 \(f\) 都能算出对应的概率: \(\dfrac{f^{sz-1}}{n^{sz}}\)(除了 \(1\) 号点,\(s\) 的值可以在 \([0,f]\) 之间任意取,在除以总方案就是概率)。那么求一下这种特殊情况的总贡献了那就是:
我们发现我们可以把数划分成若干个联通块,每个联通块都是我们刚刚算的特殊情况,我们发现联通块之间其实互不影响,划分成两个联通块本质上就是让其中一个的联通块的 \(s\) 取值范围平移一下,最后算出来的贡献还是一样的。另外我们可以只考虑 \(\frac{1}{2sz}\) 的贡献,因为所有的联通块的 \(\dfrac{1}{n^{sz}}\) 连乘的值肯定是 \(\dfrac{1}{n^n}\)。
于是我们就可以树上背包了。设 \(dp[i][j]\) 代表 \(i\) 子树下形成大小为 \(j\) 的联通块的方案数,特别的我们认为 \(dp[i][0]\) 代表一切 \(i\) 作为联通块的根的贡献和。那么我们就可以转移:
然后答案就是 \(\dfrac{1}{n^{sz}}dp[1][0]\)。
AT_agc073_d [AGC073D] Four Jewels
洛谷没题解,官方题解看不懂,先咕了。