它们中的多少个

这道题目真实绝了,这篇随笔主要是对蓝书上面的注释

首先那个结论肯定要知道,然后选取\(1\)号点作为基准点也是想到了的

那么接下来肯定就是把\(1\)号点所在连通块当做树根嘛,问题是怎么去分配剩下的点

我最开始想的是像树形背包一样去DP,但是不知道具体有多少子树,然后我又想枚举子树个,但是显然会爆炸

那么这个时候蓝书的操作就惊天地泣鬼神了,直接把这个状态\(G\)给设置了出来,所以要敢于设置状态

那么\(F\)就可以推走了

对于\(F[i,0]\),蓝书采用了补集做法,这也告诉我们,对一个数组,可能一部分用正面求另一部分用反面求

然后对于\(G\)为啥要乘以\(p\)蓝书上面也解释了。他这个“有根”指的就是从每个连通块选出一个代表点作为这个连通块的根

主要是之前在计算\(F\)的时候,为啥只用乘以\(k^x\),即使因为这里算的\(G\)是“有根”的

其实正如蓝书上面所说,这里算“有根”\(G\)是必要的,因为最开始计算\(F\)的时候我们还需要知道每个连通块具体有多少个点,这当然是不可能完成的,然而从这道题目可以看出,如果以后我们需要这么干,我们就在计算\(G\)的时候算成有根的就行了

这道题目的代码还没写,写一下

posted @ 2024-02-05 14:50  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报