首页 > 其他分享 >题解 P8294 [省选联考 2022] 最大权独立集问题

题解 P8294 [省选联考 2022] 最大权独立集问题

时间:2023-01-13 11:36:42浏览次数:193  
标签:状态 P8294 min 题解 rs 转移 sz ls 联考

Solution

根据一些逝去的记忆可以得到一个 DP 状态:\(f_{u,x,y}\) 表示 \(u\) 这棵子树,\(x\) 从子树出去,\(y\) 进来这棵子树。然后讨论一下状态转移,可以暴力枚举状态,暴力枚举之后发现一件事情,\(u,ls,rs\) 三个状态中至少一个包含 \(u\),然后可以想到枚举三条边的执行顺序,这样子状态转移是确定的,可以得到 \(6\) 种转移。状态优化比较困难。

事实上这种较为基本的 DP 转移讨论状态优化,首先需要把 DP 写成基本形式,也就是刷表法,这种形式的 DP 方程比较易于考虑优化。

首先右儿子为空的情况:

\[f_{u,u,i}=\min_j(f_{ls,j,i})+d_u+d_i \]

\[f_{u,j,i}=f_{ls,j,u}+d_j+d_i \]

然后是左右儿子都非空的情况:

\[f_{u,u,i}=\min_{j}(f_{ls,j,i}+\min_{k}f_{rs,k,j})+d_u+d_i \]

\[f_{u,j,i}=f_{ls,j,u}+\min_k f_{rs,k,i}+d_j+d_i \]

\[f_{u,j,i}=\min_{k}(f_{ls,k,u}+f_{rs,j,k})+d_j+d_i \]

对称的转移被省略。

如果仔细观察上述转移形式,可以发现所有的 \(f\) 值实际上可以被 \(\mathcal{O}(n^2)\) 个状态生成出来,即:

  • \(A_{u,i}=f_{u,j,fa_u}\)。
  • \(B_{u,i}=\min\limits_{j}(f_{ls,j,i}+\min_{k}f_{rs,k,j})\)。
  • \(C_{u,i}=\min_j f_{u,j,i}\)。
  • \(D_{u,i}=\min_k(f_{ls,k,u}+f_{rs,i,k})\)。

做一些工作就可以把 \(f\) 表示出来,此时我们只要讨论怎么将转移优化到 \(\mathcal{O}(n^2)\) 即可。

精细分析一下,对于 \(A\) 的求解,显然是对的。对于 \(D\) 的求解,我们只需要枚举右子树的 \(i\) 和左子树的 \(j\) 可以做到 \(\sum sz_{ls}sz_{rs}\) 的复杂度,这个复杂度是 \(\mathcal{O}(n^2)\) 的,只需要讨论 \(B,C\) 的转移即可,而这两个转移的思路是类似的,以 \(C\) 为例。

不妨假设 \(u\) 的左右儿子是全的,将 \(f_{u,j,i}\) 展开:

\[C_{u,i}=\min_j(f_{ls,j,u}+C_{rs,i}+d_j+d_i) \]

\[C_{u,i}=\min_j(D_{u,i}+d_i+d_j) \]

将所有不含 \(j\) 的项分离除去,发现 \(C_{u,i}\) 变成了关于 \(i\) 的函数,可以线性转移。

另外一种方式也是通过精细分析得到状态数量正确。分析我们当前的状态数是 \(\sum sz_x(n-sz_x)\),考虑转化状态,一个直觉是 \(y\) 这一维并不是很重要,只需要在得到 \(y\) 的时候直接计算贡献即可,所以可以得到一个这样的状态:\(f_{u,x,i}\) 表示 \(x\) 出去,\(y\) 的贡献为 \(i\) 的答案。粗略分析可以得到一个 \(\sum sz_x^2\) 的界,看起来不是很优秀,但是发现 \(x\) 出去,\(i\) 的贡献不会超过 \(x\) 的另一边子树,于是可以分析到 \(\sum sz_{ls}sz_{rs}\) 的级别。这是是平方的。

Conclusion

神题,整个过程分析曲折又不失逻辑性,用基础的分析技巧最后得到一个相当困难的问题。分步讨论这题的关键。

  • 状态设计。观察答案的构成形态可以发现,每个点的贡献是它经过的路径长度,考虑路径形态,发现每条边只会被上下经过恰好两次。套路地以子树阶段定义状态,可以发现子树与外界的联系其实相当少,钦定父亲边的贡献构成可以得到一个三方状态。
  • 状态优化。这里用到了一个更为基础也不是很常见的优化方法。首先将状态转移写成填表的基本形式方便分析,然后观察状态实际上可以被更少的状态表示。
  • 转移优化,展开状态式子,优化转移。

其中状态的定义是需要灵感的,后面的过程则较为基础,而基础的部分恰是本题最重要的一部分。本题隐藏在 DP 转移中的性质较为复杂,但关键在于,我们对于状态转移的过程建立了形式直观,也就是使用了恰当的公式刻画它。性质的观察并不只在于直觉与证明,还有建立直观与分析

本题的另一个做法则较为复杂,将状态转化为另一个复杂度形式不同的等价形式,通过精细分析得到正确的复杂度,现在应该学会脱离依赖直觉的分析方式,多动笔去精细分析。

标签:状态,P8294,min,题解,rs,转移,sz,ls,联考
From: https://www.cnblogs.com/yllcm/p/17049069.html

相关文章

  • CF244A Dividing Orange 题解
    Description有\(n\timesk\)个橘子,\(k\)个小朋友每人拿\(n\)个,但是每个人都指定了一个橘子\(a_i\),分配时必须要把\(a_i\)给第\(i\)个小朋友,求任一分配方案。So......
  • js加法精度问题解决
    //加法exportconstnumAdd=(num1,num2)=>{letbaseNum,baseNum1,baseNum2try{baseNum1=num1.toString().split('.')[1].length}cat......
  • maven引入本地jar不能打入部署包的问题解决
    引入的三方依赖 jar 包, scope 为 system 的包 maven 默认是不打包进去的,需要加这个配置在pom.xml文件中找到spring-boot-maven-plugin插件,添加如下配置<configu......
  • 【题解】P4126 [AHOI2009]最小割
    题意求最小割和可行边和必须边。思路清真,清真,还是**的清真。考虑可行边的充要条件:满流不存在另一条\(u,v\)间的最短路,即在残量网络上不存在包含\(u,v\)......
  • 【题解】P6071 『MdOI R1』Treequery
    海浪尽头的你啊,到底何时归来?额滴就木异象啊……思路清真树论。树论地考虑祖先后代关系,分讨一下。用ST表处理一下\(lca(l,r)=u\):\(u,p\)无祖先后代关系,答案......
  • 洛谷P7792 KRIZA 题解 C++
    洛谷P7792KRIZA题解C++题目概述:题目传送门Sisyphus在一个圆形的房间里,房间内有n扇锁着的门,他有n把钥匙,其中第i把钥匙对应第$v_i$扇门,遇到不匹配的钥匙就放......
  • 【题解】P4899 [IOI2018] werewolf 狼人
    そうやってただ日が暮れるまで語り掛ける本当の言葉题意给定一个有向图和若干询问,每次询问是否存在一条满足条件的路径:端点分别为\(u,v\)前面一段不经过\([1,L......
  • 传递游戏【题解】
    Description毛大神最近在玩一个传递游戏,即有\(N\)个人在做传递物品的游戏,这N个人的编号为\(1,2,3,...,N-1,N\)。游戏规则是这样的:开始时物品可以在任意一人手上,他可把物......
  • 表达式的值【题解】
    [NOIP2011普及组]表达式的值题目描述对于1位二进制变量定义两种运算:运算的优先级是:先计算括号内的,再计算括号外的。“×”运算优先于“⊕”运算,即计算表达式......
  • [NOIP2017 普及组]跳房子 【题解】
    题目背景NOIP2017普及组T4题目描述跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。跳房子的游戏规则如下:在地面上确定一个起点,然后在起点......