首页 > 其他分享 >生活在hzoi上 题解

生活在hzoi上 题解

时间:2024-08-13 12:04:47浏览次数:10  
标签:连通 生活 vert limits 题解 sum times hzoi dp

生活在hzoi上 题解

考虑有两棵树怎么做,显然是 \(y^{n - k}=y^{n - \left\vert E_1 \cap E_2 \right\vert}\) 其中 \(E_1\) 和 \(E_2\) 是两棵树的边集

发现上边那个 \(k\) 是两棵树边集交构成的图的连通块个数 \(\left\vert E_1 \cap E_2 \right\vert\) 就是两棵树交的连通块数量的表示

因此有 \(k\) 个连通块的合法方案就是上面那一坨

考虑枚举连通块形态,也就是枚举重合的边,首先让边重合,之后任意连边使得连通块联通,这样就能构造出第二棵树,但是任意连边的时候会连上一些和第一条重合的边,导致连通块形态变化,这显然会算重

但是我们不会其他做法,把这个写出来,等等或许就有办法把算重的除去

贡献是

\[\sum_k \sum_{s_1 \cup s_2 \cup ... \cup s_k = E_1 ,s_1 \cap s_2 \cap ... \cap s_k = \varnothing} y^k n^{k-2} \prod \left\vert s_i \right\vert \]

右边 \(n^{k-2} \prod \left\vert s_i \right\vert\) 是 prufer 序列的结论

然后我们只要考虑怎么使用容斥或者什么其他玩意把多出来那部分搞掉就好了

jijidawang 做法

考虑这个东西实际上算了每个状态多少次,对于每个子状态,也就是从当前枚举的连通块里切断一些边,都会额外以错误的贡献算一遍当前状态,加上本来的一次贡献,所以是

\[\sum_{p \in Q} \sum_{i=0}^{n-k} \dbinom{n-k}{i} y^{k+i} \]

左边 \(p\) 是枚举每一棵合法的第二棵数,\(k\) 是这个状态和第一棵树交的连通块个数

整理一下,发现有个二项式定理展开形式,给它收回去,然后发现里面那个二项式系数没了

\[\sum\limits_{p \in Q} (1+y)^{n-k} y^{k} \]

也就是说当输入的那玩意是 y 的时候,上面那个算法算出来的是 $\sum\limits_{p \in Q} (1+y)^{n-k} y^{k} $

然而我们要求的是 $\sum\limits_{p \in Q} y^{k} $

假设现在我们能够对任意变量 \(x\) 求出 $\sum\limits_{p \in Q} (1+x)^{n-k} x^{k} $,而答案是 $\sum\limits_{p \in Q} y^{k} $

左边 \((1+x)^n\) 是好做式子,因此我们知道上面那个式子就能得知 $\sum\limits_{p \in Q} (1+x)^{-k} x^{k} $

发现我们构造一个合适的 \(x\) 使得 $\sum\limits_{p \in Q} (1+x)^{-k} x^{k}=\sum\limits_{p \in Q} y^{k} $ 即可

把 \((1+x)^n\) 提出来就是为了让这步好做些,容易知道 \(x=\frac{y}{1-y}\)

好了,现在设 \(f(x)=\sum\limits_k \sum\limits_{s_1 \cup s_2 \cup ... \cup s_k = E_1 ,s_1 \cap s_2 \cap ... \cap s_k = \varnothing} x^k n^k \prod \left\vert s_i \right\vert\),为了好算和统一指数把 \(n^{-2}\) 提出来了

答案就是 $$\frac{f(x)}{(1+x)nn2}$$

dp

现在我们都有了计算答案的式子,只需要算出来 \(f(x)\) 就好了

如果枚举连通块个数的话是 \(O(n^2)\) 的,所以我们只能考虑将连通块的贡献扔到每个点里

这貌似是一个经典 trick,考虑这个式子相当于在每个连通块里面找一个点,将点权作为整个连通块的权值,之后整棵树的权值等于所有连通块权值的乘积

设状态 \(dp_{i,0/1}\) 分别是当前这个点所在连通块 选了/没选 的贡献,能够写出转移

\[dp_{i,1}=dp_{i,1} \times dp_{j,0} + dp_{i,0} \times dp_{j,1} + dp_{i,1} \times dp_{j,1} \]

\[dp_{i,0}=dp_{i,0} \times dp_{j,0} + dp_{i,0} \times dp_{j,1} \]

注意 \(dp_{i,1}\) 初值为 \(xn\),先更新 \(dp_{i,1}\),不然会出现一颗子树连了又没连

依次写出上面几项的含义:

  1. \(dp_{i,1} \times dp_{j,0}\) 是和下面没选贡献节点的子树连到一起,所以选了自己
  2. \(dp_{i,0} \times dp_{j,1}\) 是和当前子树连到一起,在子树内就选好贡献
  3. \(dp_{i,1} \times dp_{j,1}\) 是不和当前子树连到一起,自己和子树都选好了贡献
  4. \(dp_{i,0} \times dp_{j,0}\) 是和当前子树连一起
  5. \(dp_{i,0} \times dp_{j,1}\) 是断开这条边

这样我们就能在 \(O(n)\) 的复杂度内求出 \(f(x)\) 从而解决此题

标签:连通,生活,vert,limits,题解,sum,times,hzoi,dp
From: https://www.cnblogs.com/hzoi-wang54321/p/18356606

相关文章

  • 记一次NoClassDeffoundEror问题解决过程
    背景:在对某台计算服务器进行代码修改后,发现es查询报错,抛出异常如下: 思路: 1.jar包冲突   查询了对应jar的pom文件,发现只有一个es的版本jar包,不存在冲突,百思不得其解。2.本地环境问题   清理idea的缓存,发行问题仍然存在最后翻阅资料,打了断点追踪异常抛出的地方,......
  • ARC182 题解
    A-ChmaxRush!发现一个数能向哪边覆盖只由再他之后操作且\(v\)比他大的操作决定。所以扫一遍确定方向之后乘起来就好。B-|{floor(A_i/2^k)}|首先不难发现\(<2_{k-1}\)的元素是无用的,因为它们会由\(\ge2^{k-1}\)的元素除以2的幂得到。先想上界。对于\(0\l......
  • ARC182B |{floor(A_i/2^k)}| 题解
    ARC182B|{floor(A_i/2^k)}|题解题目大意定义一个长度为\(N\)的序列\(A\)的分数为能被表示成\(\lfloor{A_i\over2^k}\rfloor\)的数的个数,其中\(i=1,2,\dots,N\),\(k\)为任意自然数。给定\(N,K\),求长度为\(N\)且元素大小都在\(2^K-1\)内的所有序列的分数的最大值......
  • 【题解】 [USACO 2007 FEB] Cow Party S
    题目描述题目大意给定一个有向图,以及一个顶点。求其他所有点到给定点,再从给定点回到各自起始点的最短路中的最大值。思路本题主要考查:对单源最短路算法的熟练运用。最短路总共分为2段:其他所有点到给定点、给定点回到各自起始点。首先求第一段:可以在原图的基础上建一个反向图......
  • 洛谷 P4305 不重复数字——题解
    洛谷P4305题解传送锚点摸鱼环节[JLOI2011]不重复数字题目描述给定\(n\)个数,要求把其中重复的去掉,只保留第一次出现的数。输入格式本题有多组数据。第一行一个整数\(T\),表示数据组数。对于每组数据:第一行一个整数\(n\)。第二行\(n\)个数,表示给定的数。输出格......
  • 【题解】 热浪
    题目描述【题目描述】德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品。FarmerJohn此时以先天下之忧而忧,后天下之乐而乐的精神,身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛......
  • [题解 hduoj-7522] 2024HDU 暑假多校7 - cats 的最小生成树
    原题链接题意有一个有重边的无向图,每次找到它的最小生成树,并删除生成树的边,直到不存在最小生成树,问被每条边在第几次被删除.思路考虑用类似Kruskal算法,但是是遍历一遍所有边,同时处理出来所有的生成树.具体这样做:如Kruskal一样,把所有边按边权排序,......
  • GBNC 题解
    GBNC题解这可比平时做的红题难吧。题目以思维为主,和CCF的趋势有点挂钩。题目实际难度:橙-,橙,橙,黄。不知道从哪听到的消息,说你们的信息思维都特别好,所以就没有大红题了。T1思路这道题我们能用模拟来写。我们可以将这整个询问分为\(n\)个小询问。每次询问我们用一个整形\(......
  • [题解]P3966 [TJOI2013] 单词
    P3966[TJOI2013]单词用\(p[i]\)来表示经过节点\(i\)的字符串个数。那么节点\(u\)的答案就是fail树上,以\(u\)为根的子树的\(p\)之和。由于我们已经计算了\(p[i]\),所以字符串\(i\)作为模式串本身&模式串前缀的情况已经考虑了。还需考虑\(i\)作为模式串后缀的情况,而只有fail树上......
  • 【题解】 小狗
    题目描述【题目描述】小Q是个爱狗狂魔,他饲养了N(N<=2000)条中华田园犬狗和M(M<=2000)条秋田犬。并且给每条狗取了一个英文名字,例如:Sally,Sussan,Lysa等,为了方便起见,小Q登记时只会登记首字母,例如Sally、Sussan、Lysa只会登记为S、S、L。现在中华田园犬......