【树形dp】ccpc网络赛-Tree and Permutation (显得高大上一点)(史上最详细-。-)(我真无聊)

版权声明:版权所有……啊重点是我简直找不到第二个人写比我还多的吐槽-。- https://blog.csdn.net/StrongerIrene/article/details/82430239

“哦,天哪,我不能接受,这太疯狂了。”

她一面说着一面起身去关好门窗。

---------------------

困扰了好久好久今天才补  我也太业余了吧(摊手)(可是趁着假期可以好好学习理财/多看一些视频啊)

Charpter 01.题意

给出一棵树和权值,列出一个n的全排列。

每个全排列计算一遍,比如1234就是1到2+2到3+3到4,得到sum,求所有全排列的sum

(全排列也就是n!)

样例,比如1 2 1  。 2 3 1 就是16

Charpter 02.分析

当然是要根据一组样例来看。

1 2 3  怎么拿到16的 先画个图

【但是,在理解了题意之后,这组样例要继续利用它的价值来分析】

“刚开始没思路,感觉好玄学好难,然后画了四个点的树(两种)所有走法,脑补了一会才想出来。”

这里稍微注意一下,因为我自己画图的时候画错了。。就像枚举起点和终点就不会错一样,如果先看一样的(比如1,2  然后21)再划去,不仅会拿到规律, 而且不容易错!

但是这里 就会有一些东西出来混淆视听了。

首先,ab(或者ba)这两个东西,在全排列里面的出现次数是(n-1)!*2 (因为顺序无所谓,*2)

"对于一对经过L的点对(a,b),在N!的走法中相邻出现次数为(n-1)!*2 ,因为可以ab或者ba;"

当结论记下来。因为,譬如1 2 3 4 5 里面的1 2 ,可以有4种也就是(n-1)个位置放,每种位置固定下来之后(1 2 x x x)剩下的xxx有(n-2)种组合方式,综合起来就是(n-1)!*2,它在排列里面出现了这么多

Charpter 03.推进

但是,这位爷有时候手有点长,比如1 2 出现了4次,2 3 也是4次(加起来是8),1 3 还要4次但是边只是给了前面那个。

也就是1 2 这条边承载的不是只有从1到2,还要沾亲带故的1到3,1到4,……

(当然幸运的是,1到3这种的是黏附在1 3 1 4 之中的。每一个1 3  1 4 这种的出现的次数也是(n-1)!*2  只不过1 3 1 4 这种的要利用1 2 来继续自己的侵略计划。)

所以只要统计一下有多少个类似1 3 1 4 这种的无赖,无赖的总个数*(n-1)!*2就好了。

有多少无赖怎么看呢?因为是1到n,任意的, 啊,我们可以suppose这种无赖行为当且仅当路过这条边的时候发生。

左边5个孩子,右边3个,每个孩子都想找对面的孩子玩儿,那么就是5*3次。

其实就是那个设这里有m个点,对面n-m个,最后(m*(n-m)*(n-1)!*2)

关键点只是用bfs泡一下固定一条边的时候边的两边儿有多少孩(wu)子(lai)就可以了

这算个比较经典的模型了 ,好好理解一下算法,自己打完通过为宜

Charpter 04.代码

参考了一点 https://blog.csdn.net/qq_36553196/article/details/82121058 (写的真好)

还参考 1 2

(我现在感觉到了。。五颜六色的字体不是不好用我根本就是懒得用。。。 今天知道了怎么创建目录了。。

谢谢你谷。。 exif可以用winhex试着还原。。。 这还真是什么水都能划啊。。

猜你喜欢

转载自blog.csdn.net/StrongerIrene/article/details/82430239