「10.8」simple「数学」·walk「树上直径」

A. Simple


本来以为很难,考场瞎推了推好像会了......

想起小凯的诱惑,迷??

首先$n$,$m$,$q$同除$gcd(n,m)$,显然$q$以内的数假如不是$gcd$的倍数,那么一定不能被表示

然后在求新的$q$以内不能被表示的数

因为现在$n$,$m$互质,所以$n imes m$至q的数一定能被表示,我们就把范围缩小到$min(n*m,q)$以内

因为在$n imes m$以内,所以取不同$n$,$m$系数时结果不同

所以就因为$m$很小,直接枚举$m$的系数,最多枚举$n$个数,所以$n imes T$复杂度。

 

B. Walk


$wleq 100$打法:

显然将问题转化为当$gcd$为某数时的最大直径,倒着求一边后缀最大值即可,

(听说打$n imes w$的T飞了,然而我打的$n imes w imes w$的没T)

正解:

思路很新颖

将每个边分解出约数,存在$vector$里,然后求出每个约数的最大直径,

注意清空不能全清,

复杂度最坏是$n imes sqrt{w}$,但应该数据没有卡

原文地址:https://www.cnblogs.com/Wwb123/p/11639556.html