6.24赛后总结

6.24模拟赛赛后总结

赛时历程

读题的感觉有了。七点二十读完题目,然后开始敲T1的暴力。

敲T1的暴力经历了一个小小的写假的过程,不过问题不大,七点五十得到10分(10分80行,,,)

七点五十到八点想了想T2的暴力,感觉这题有些不可做。

八点开T3暴力,先打了全排列,八点十几分打完。

这个时候想着大概有22分了。

然后就什么都不会了,没错,中间还试图挣扎,但无奈太弱了啊~~。

最后5分钟好奇的测了测T1的样例2,竟然错了,还好是小问题,不然就抱玲了——

赛后发现

22分都能挂成10分。

1 T3 抱玲了,如果不是检查了T1,就全抱玲了,挂掉的原因是搞排列之前没有排序。太蠢了。

2 看上去去年的选手打的也不是很高。大概是这套题区分度不行,部分分都和正解的深度差不多。

技术总结

T1

​ 这个要讲有点麻烦。题目问的是 对于每一个合法的染色状态\(c\),问 \(\sum_c|S(c)|^k=\sum_c(\sum\limits_{i=1}^m[i\in S(c)])^k\) 首先是关于\(k=1\) 的树形DP,式子转化之后变成了求这样的式子, \(\sum\limits_{i=1}^m\sum_c[i\in S(c)]\) 即对于每一个颜色,考虑有哪些状态它出现在了关键点S中,考虑\(g[i]=\sum_c[i\in S(c)]\),显然对于每一个 \(i\) ,这个 \(g\) 都是相等的,因为每个颜色并没有什么与众不同的特质,所以不妨来试着求 \(g[1]\), 直接求,难!正难则反,考虑完全不让这些点选择一个颜色,然后用总的方案数减去就好了,考虑树形DP,\(f[i][0/1]\)表示这个点选或者不选择颜色1的子树下的方案数(不包含自己),那么\(f[x][0]=\prod_{y\in son[x]}f[y][0]*(m-2)+f[y][1],f[x][1]=\prod_{y\in son[x]}f[y][0]*(m-1)\),最后我们的\(g[1]=(m-1)^{n-1}*m-f[1][0]*(m-1)-f[1][1]\).

这个g[1]乘m就是我们的最终答案。然后考虑对原式子做转化,考虑把那个k次方给展开成斯特林的样子,则\(\sum_c\sum\limits_{i=0}^kS(k,i)*C(|S(c)|,i)*i!=\sum\limits_{i=0}^kS(k,i)*i!\sum_cC(|S(c)|,i)\) ,然后,再考虑\(g[i]=C(|S(c)|,i)\),这个东西就是“在所有的合法染色中选择i个颜色来放入关键点的方案”,它等价于“对于所有的由\(i\)个颜色的组成的集合T,\(T\subseteq S(c)\) 的方案”,我们考虑\(h[i]\)为任意\(i\)个颜色组成的集合能够被\(S(c)\) 包含的方案,那么\(g[i]=C(m,i)*h[i]\),然后我们惊奇的发现,求\(h[1]\)的话问题就是任意一个颜色,有哪些状态使得它出现在看关键点S中,这个是\(k=1\)的情况里已经考虑过做法的,所以可以考虑用类似的方法来求所有\(h[i]\),仍然是树形DP,\(f[x][0/1]\)则表示 \(x\) 选择的颜色是否是 \(i\) 个禁用色之一的颜色,那么转移方程就是\(f[x][0]=\prod_{y\in son[x]}f[y][0]*(m-i-1)+f[y][1]*i,f[x][1]=\prod_{y\in son[x]}f[y][0]*(m-i)+f[y][1]*(i-1)\),可以记\(DP[i]\)为禁用 \(i\) 个颜色的方案,那么\(DP[i]=f[1][1]*i+f[1][0]*(m-i)\),然后通过容斥禁用的颜色个数,得到 \(h\),具体来说 \(h[i]=\sum\limits_{j=0}^i(-1)^j*DP[j]*C(i,j)\)。到此为止!我们\(O(nk)\)的预处理所有的\(DP[]\)\(O(k^2)\) 计算所有的 \(h\),最后再\(O(k)\)的计算最终答案即可!

T2

思维转化+线段树合并。

T3

不会做的带结论的复杂DP题增加了!

posted @ 2021-06-24 22:06  explorerxx  阅读(42)  评论(0编辑  收藏  举报