杂题乱写6 月西安多校 DP 专题训练

Posted SoyTony

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杂题乱写6 月西安多校 DP 专题训练相关的知识,希望对你有一定的参考价值。

6.19 DP 专题训练

这也太难了!这也太难了!这也太难了!

A UOJ-607 UR#20 跳蚤电话

加点操作太抽象,改成删点,每次可以删一个叶子,或者删一个只有一个父亲和一个儿子的节点。

算方案还带顺序,子树间再算多重集组合数不方便,不如直接算任意顺序删点最后合法删完的概率。

\\(f_u\\) 为按任意顺序删点删完 \\(u\\) 子树的概率,答案就是 \\((n-1)!\\prod_u\\in \\mathrmson(1) f_u\\)

暴力转移枚举子树内最晚删的点,如果就是 \\(u\\) 本身,那么贡献是 \\(\\prod_v\\in \\mathrmson(u) f_u\\)

反之枚举一个 \\(v\\),这时就要先删 \\(v\\) 子树内其他节点和不在 \\((u,v)\\) 路径上的子树,设 \\((u,v)\\) 路径为 \\(a_1=u,\\cdots,a_l=v\\),那么 \\(a_k\\)\\(a_k+1\\) 以外的其他子树合法条件就是这些子树本身能完全删除,同时 \\(a_k\\) 在这些节点之后删除,和上面合起来就是:

\\[f_u=\\dfrac1siz_u\\left(\\prod_v\\in \\mathrmson(u) f_v+\\sum_v\\in \\mathrmsubtree(v),v\\neq u \\prod_w\\in \\mathrmson(v) f_w\\prod_k=1^l-1 \\dfrac1siz_a_k-siz_a_k+1\\prod_w\\in \\mathrmson(a_k),w\\neq a_k+1 f_w\\right) \\]

\\(g_u=f_u\\times siz_u\\),就把外面的系数摘掉了,注意到前半部分复杂度正确,后半部分和 \\(u\\) 有关的只有 \\(a_1\\) 一项,于是相当于是 \\(v\\)\\(u\\) 做贡献,每次合并就是增加一项。

这样就是:

\\[g_u=\\prod_v\\in \\mathrmson(u) f_v+\\sum_v\\in \\mathrmson(u) g_v\\times \\dfrac1siz_u-siz_v\\prod_w\\in \\mathrmson(u),w\\neq v f_w \\]

实际上,\\(f\\) 前半部分乘上这一项系数之后就和 \\(f\\) 后半部分形式相同,所以转移是正确的。

提交记录:Submission - UOJ

D CodeForces-CF1239E Turtle *3100

这个东西长得很想皇后游戏那题。

考虑交换贪心,若只交换 \\(a_x,1\\)\\(a_x+1,1\\),则在 \\(x+1\\) 位置向下的值路径和不变,在 \\(x\\) 位置向下的路径和由 \\(a_x,1\\)\\(a_x+1,1\\) 的大小决定,因此第一行应当是一个单调不降的序列,而第二行应当是一个单调不升的序列。再考虑两条相邻路径对应权值的变化量,实际是增加 \\(a_x+1,1\\),减少 \\(a_x,2\\),由于 \\(a_x,1\\) 不降,\\(a_x,2\\) 不升,所以这个变化量 \\(a_x,1-a_x+1,2\\) 应当是单调不降的,因此其原函数是下凸或是单调函数,也就是只有在 \\(1\\)\\(n\\) 位置向下走才会取到最大值。

把两个最小值放在 \\(a_1,1,a_n,2\\) 处,剩下就是要规划分配方案使得二者中最大值最小了,背包就可以解决问题,输出方案只需要按前面单调的性质排布。复杂度是 \\(O(n^3\\omega)\\)

提交记录:Submission - CodeForces

以上是关于杂题乱写6 月西安多校 DP 专题训练的主要内容,如果未能解决你的问题,请参考以下文章

杂题总汇HDU多校赛第十场 Videos

2018寒假 acm训练计划

2021牛客暑期多校训练营5Double Strings(二维字符串dp)

2021牛客暑期多校训练营5 D.Double Strings(容斥dp)

数位dp专题训练

2021牛客暑期多校训练营1 I.Increasing Subsequence(期望,维护后缀和优化dp)