这道题目真实绝了,这篇随笔主要是对蓝书上面的注释
首先那个结论肯定要知道,然后选取\(1\)号点作为基准点也是想到了的
那么接下来肯定就是把\(1\)号点所在连通块当做树根嘛,问题是怎么去分配剩下的点
我最开始想的是像树形背包一样去DP,但是不知道具体有多少子树,然后我又想枚举子树个,但是显然会爆炸
那么这个时候蓝书的操作就惊天地泣鬼神了,直接把这个状态\(G\)给设置了出来,所以要敢于设置状态
那么\(F\)就可以推走了
对于\(F[i,0]\),蓝书采用了补集做法,这也告诉我们,对一个数组,可能一部分用正面求另一部分用反面求
然后对于\(G\)为啥要乘以\(p\)蓝书上面也解释了。他这个“有根”指的就是从每个连通块选出一个代表点作为这个连通块的根
主要是之前在计算\(F\)的时候,为啥只用乘以\(k^x\),即使因为这里算的\(G\)是“有根”的
其实正如蓝书上面所说,这里算“有根”\(G\)是必要的,因为最开始计算\(F\)的时候我们还需要知道每个连通块具体有多少个点,这当然是不可能完成的,然而从这道题目可以看出,如果以后我们需要这么干,我们就在计算\(G\)的时候算成有根的就行了
这道题目的代码还没写,写一下
标签:有根,连通,题目,它们,蓝书,这道,多少,号点 From: https://www.cnblogs.com/dingxingdi/p/18008180