首页 > 其他分享 >P10064 [SNOI2024] 公交线路 题解

P10064 [SNOI2024] 公交线路 题解

时间:2024-02-21 21:23:44浏览次数:30  
标签:sz 联通 题解 sum times yz P10064 SNOI2024 dp

非常好题目。

思路

可以发现限制最严的一定是两个叶子的联通性。

我们不妨把一个叶子向外起到联通性作用的路径称为有用的路径。

也就是这个叶子走这条路径一定可以两步以内到达任意点。

这个路径集合有什么作用呢。

有一个性质:整个集合的路径的交最终会形成一个连通块。

那么我们就可以进行求解方案数。

考虑容斥。

我们设 \(dp_{1,i}\) 为联通块内强制有 \(i\) 这个点,设 \(dp_{2,i}\) 为联通块内强制有 \(i\) 这条边。

那么:

\[ans=\sum dp_{1,i}-\sum dp_{2,i} \]

如何求解?

首先考虑边的情况。

我们可以设 \(f_i\) 为至少有 \(i\) 个叶子不与这条边联通,\(sz_i\) 表示 \(i\) 的子树大小,\(yz_i\) 表示 \(i\) 的叶子数量。

那么:

\[f_{i+j}=\sum_{i=0}^{yz_x}C_{yz_x}^i 2^{i\times(sz_x-1)-\frac{i\times(i-1)}{2}}\sum_{j=0}^{yz_y}C_{yz_y}^j 2^{j\times(sz_y-1)-\frac{j\times(j-1)}{2}} \]

当然还要乘其他不重要的边的方案数,也是一个二的次幂。

暴力做是平方的。

容易发现可以多项式优化。

然后考虑点的情况。

同样可以设 \(f_i\) 为至少有 \(i\) 个叶子不与这个点联通。

那么加入一颗子树的代价是:

\[f_{i+j}=\sum f_i\sum_{j=0}^{yz_y}C_{yz_y}^j 2^{j\times(sz_y-1)-\frac{j\times(j-1)}{2}} \]

同样是卷积形式,可以多项式优化。

最终复杂度:\(O(n^2 \log n)\)。

标签:sz,联通,题解,sum,times,yz,P10064,SNOI2024,dp
From: https://www.cnblogs.com/JiaY19/p/18026233

相关文章

  • Atm/抢掠计划——题解
    题目描述样例671223352441266510128161514435647解析题目明显是最长路,可以用spfa求最长路,但数据范围5e5明显不允许,所以我们可以用tarjan优化一下,然后这就变成了一道tarjan板子题,先用tarjan缩点,点权为几个点之和,把所有点再存到一个数组中,再按......
  • 洛谷P4447题解
    md这篇反正不交题解的,随便写,不管它格式题意简化下,给你N个数,求出连续值分组人数最小的那组的人数最大值。这个题目还挺经典的,原本23年8月份过了到现在来又不会了(划掉,bushi对于这种,很容易想到的是输入,之后排序,然后分组这种模板就不多说了,就在我24年2月份重温这道题再打一遍代码......
  • 1 c++算法题解析-两个数之和
    //给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。//你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。//你可以按任意顺序返回答案。//示例1:////输入:nums=[2,7,......
  • ARC111B Reversible Cards 题解 (套路题)
    考虑将\(a_i,b_i\)之间连边,发现题目可以被转化为给定一个图,要求对于每条边将其一个顶点染色,问最多能将多少个点染色。于是我们对于每个连通块分开来考虑。对于一个连通块,注意到我们不能将每个顶点染色当且仅当这个连通块是树,且此时可以染色的定点数量为连通块大小减一,如下:如......
  • blocks——题解
    题目描述解析对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于0,我们可以用一个单调递减栈去维护,先把比0小的推入栈中,因为要求最大区间,所以边界......
  • 良好的感觉——题解
    题目描述分析题目意思就是找子区间的和乘区间最小值的最小值;1.纯暴力。。。肯定TLE.2.枚举最小值,找两边第一个比它小的,求区间和。(肯定第二种)。。。实现纯循环的话肯定不行,这时候需要一点小优化——单调栈;既然枚举最小值的话,复杂度只要O(n),可以用前缀和求区间和,接下来就是......
  • P4141 消失之物题解(写给每一位与我一样的新手玩家)
    消失之物传送门:P4141消失之物-洛谷|计算机科学教育新生态(luogu.com.cn)思路暴力稳了但是hacktle了这时候我们要想办法优化这是一个回退背包问题首先第一步,我们把正常的背包(n间物体)求出来,然后就是板子,求出填满当中体积有多少种方法第二步就是回退,回退的关键问题......
  • luogu5021题解
    形式化题意:在一棵树上找\(m\)条没有重复边的路径,使得最短的路径最大,求这个最短路径的最大值。看到这个最大值就想二分答案。\(1\lem\len-1\),我们可以将长度的下限为最短的那条边,此时所有边都是符合要求的路径。长度的上限为所有路径的长度除以\(m\),向下取整。我们在判断......
  • 2024年2月20号题解
    P5594【XR-4】模拟赛解题思路重点是怎么判断是不是同一套模拟题用一个数组来标记是不是同一套题代码实现#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>#include<stdbool.h>#defi......
  • B3893 [NICA #3] 一键三连 题解
    本文同步发布于洛谷博客水题啊,我发现chen_zhe上传的水题这么多呢?难道kkksc03把水题都交给他上传了?题意简述输入两个整数\(x\)和\(y\),输出\(x+y\times2\)。我能直接上代码吗好的,让我们通过做题认识一下相关的知识点:YF001int类型与输入输出YF002数与数之间的运......