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

A. Simple


 

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

想起小凯的诱惑,迷??

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

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

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

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

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

 

B. Walk


 

$w\leq 100$打法:

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

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

正解:

思路很新颖

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

注意清空不能全清,

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

 

posted @ 2019-10-09 09:22  Wwb_star  阅读(159)  评论(0编辑  收藏  举报