\(22pts\),本来可以切掉前两个题的?!
A. 传送 (teleport)
签到
12 pts,错的很唐!我把 Dij 用的 dis 数组直接赋值成了点到 1 号点之间的 x 距离和 y 距离的最小值,没再赋成极大值,这样会改变 Dij 过程中点遍历到的顺序,然后就跑不出最短路了。
好像不能算挂分?但其实赛时有点感觉是这的问题了,但怎么就是没改了试试呢!!
正解:
对于传送,直接分别按 X 和 Y 为关键字排一次序,排序后相邻的点建边跑 Dij 就做完了。
B. 排列 (permutation)
简单排列组合
官方题解状压发现想不到,所以考虑直接组合做降低这道题的难度,这样我们就多了一个签到!
由于 \(\frac n k\le 10\),所以 k 的倍数最多有 10 个。
那么我们直接枚举所有 k 的倍数的全排列,时间复杂度为 \(O(\frac n k!)\) ,然后判断枚举出的排列中哪几对两两相邻的数的最大公约数为 k,这些对相邻的数之间必须要有一个其他的数把两个数隔开。
设有 \(mst\) 对相邻的数有最大公约数为 k,\(num=\frac n k\),那么在剩余的数中选出 \(mst\) 个数先隔开这些不能相邻的数(需要考虑顺序),方案为 \(A^{mst}_{n-num}\)。
然后把选出的 \(mst\) 个数看成与其左边的数绑在一起,那么现在有 \(num\) 个位置有数,还有 \(num+1\) 个位置可以放数,剩下的这 \(n-num-mst\) 个数就随便放,其实就是有顺序的 \(n\) 球放在 \(m\) 个盒子里,盒子可以为空的问题,设 \(rest = n-num-mst\),方案数为 $rest!\times C_{rest+num+1-1}^{num+1-1} $。
那么答案就是,对于所有 \(1-\frac n k\) 的不同的排列,\(\sum A^{mst}_{n-num}\times rest!\times C_{rest+num+1-1}^{num+1-1}\)。
标签:num,Dij,mst,多校,rest,相邻,联训,frac,模拟 From: https://www.cnblogs.com/YuenYouth/p/18472487