“哦,天哪,我不能接受,这太疯狂了。”
她一面说着一面起身去关好门窗。
---------------------
困扰了好久好久今天才补 我也太业余了吧(摊手)(可是趁着假期可以好好学习理财/多看一些视频啊)
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 (写的真好)
(我现在感觉到了。。五颜六色的字体不是不好用我根本就是懒得用。。。 今天知道了怎么创建目录了。。
谢谢你谷。。 exif可以用winhex试着还原。。。 这还真是什么水都能划啊。。