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

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

时间:2023-03-03 20:33:19浏览次数:64  
标签:P8294 省选 交换 dep 父亲 联考 dp

题面传送门

做了半个下午,写了大半个晚上,真的是 dirty work。

首先一个点只会和父亲交换一次,并且交换了两边就相对独立了。因此我们考虑从这个方面入手 dp。

设 \(f_{i,x,y}\) 表示 \(i\) 和父亲交换的时候,换出去 \(d_x\) ,换进来 \(d_y\) ,最少的子树内交换次数。容易做到 \(O(n^3)\)。

但是你发现这个东西非常不好,因为状态数就是 \(O(n^3)\) 的。如果 \(y\) 也在 \(i\) 的子树内且和 \(x\) 不同子树那么就是 \(O(n^2)\) 了。

能不能实现呢?试试看修改 dp 状态,我们现在不要知道换进来几个,而是把换进来的数换了几次记到状态里面去。设 \(f_{i,x,y}\) 表示 \(i\) 换出去的是 \(d_x\),换进来的走了 \(y\) 步,这样状态数降到了 \(O(n^2)\) ,并且看上去有优化的余地。我们来尝逝讨论一下。

  • \(i\) 没有儿子,那么只有 \(dp_{i,i,0}=0\)。

  • \(i\) 只有一个儿子,记作 \(v\),那么有两种情况:

    1. 先和子树交换,再和父亲交换:\(dp_{v,j,dep}+d_i\times (dep+1)+d_j\to dp_{i,j,0}\)。
    2. 先和父亲交换,再和子树交换:\(dp_{v,j,dep}+d_j\to dp_{i,i,dep+1}\)。
  • \(i\) 有两个儿子,记作 \(L\) 和 \(R\),因为哪个先走是对称的,所以假设 \(L\) 先走。

    1. 先和父亲交换:\(dp_{L,j_1,d_1}+dp_{R,j_2,d_2}+d_{j_1}(d_2+2)+d_{j_2}\to dp_{i,i,d_1}\)
    2. 先和 \(L\) 交换,再和父亲交换:\(dp_{L,j_1,d_1}+d_i\times d_1+dp_{R,j_2,d_2}+d_{j_2}\to dp_{i,j_1,d_2}\)。
    3. 先和 \(L,R\) 交换,再和父亲交换:\(dp_{L,j_1,d_1}+d_i(d_1+1)+d_{j_1}(d_2+2)+dp_{R,j_2,d_2}+d_{j_2}\to dp_{i,j_2,0}\)。

直接转移大概是 \(O(n^3)\) 的,如果你用指针分配空间大概能过 \(64\)。

优化的话发现三方部分主要在两个儿子的部分,而这些都可以斜率优化,于是就做到了 \(O(n^2)\)。细节巨大多,还只有这么小的样例。

submission

标签:P8294,省选,交换,dep,父亲,联考,dp
From: https://www.cnblogs.com/275307894a/p/17176892.html

相关文章

  • 省选联测 43
    上午学考的时候口胡了前三题,然而T4看不懂样例。树上的数思博题。dfs即可。容易发现每个被删掉的节点只会扫一遍。#include<cstdio>#include<algorithm>#include......
  • 省选联测41,42
    省选联测41冤家路窄意义不大题,先建出最短路图,总方案减去不合法方案,枚举相遇的点和相遇的边即可,但是记得方案数都要按平方算总结:垃圾大样例夹克姥爷win了win了意义不完......
  • JZOJ 6664. 【2020.05.28省选模拟】最优化
    \(\text{Solution}\)原题:\(\text{HonorableMention}\)一个费用流做法,\(S\)向\(2i-1\)连流量为\(1\),费用为\(0\)的边,\(2i\)向\(T\)连流量为\(1\),费用为\(0\)......
  • 省选备战报告 第零辑 分块与根号平衡
    本笔记仅仅记录重点思路,详细解题过程请参阅原题题解难度从低到高为NÄIVE:有效思考时间少于十分钟EASY:能够完全独立得出MEDIUMEASY:需要题解提供关键思路跨越MEDIUM:需......
  • 省选联测 42
    又垫底了。不懂为什么T3都切了。鉴定为人菜。joke3579说他演了一整场,那他比较强。猜数字思博题。位数是\(n\lgn+1\)。#include<cstdio>#include<iostream>#in......
  • 【题解】P3747 [六省联考 2017] 相逢是问候
    思维难度作为一道省选题还是有待商榷,但是代码确实挺恶心的。记一下这种有关无穷层幂嵌套(无穷幂塔)的套路。思路扩展欧拉定理+线段树。首先看到不断嵌套幂并且模数较大......
  • 2021 联合省选 A 卷题解
    比2022小清新了许多。卡牌游戏首先可以知道的是按照\(a\)升序排序,肯定有一段区间的\(a\)全保留,然后剩下的全翻面。那么我们需要求出最长的这段区间是什么。首先......
  • 2023 省选联测41 - ?
    2023省选联测41A.冤家路窄找出\(Deg\)用总路径数减去相遇的路径数code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsigne......
  • 2021cspj省选
    1.#include<bits/stdc++.h>usingnamespacestd;vector<string>split(strings,charch){intstart=0;intlen=0;vector<string>ret;for(inti=0;i<s.len......
  • 省选联测37-40
    省选联测40后浪总结:典中典之注意到只有一个段会有\(0\)也有\(1\)的贡献即可脑力不错的题,当时整个人状态非常玄妙,灵机一动就切了考虑trie树上dp不好,但是子集d......