T1
仔细推导打表一发之后发现单个数的约数个数最多不会超过(2000)左右,于是直接记录每个数的约数然后直接做就行。
TIPS:实际上(10^9)以内约数个数最多的是(735134400),约数个数为(1344)个。
T2
询问很多但是天数很少,少到可以用数组记录下来,于是直接预处理每天的然后做就行,查询的时候复杂度有点高,感觉可以用二分但是没有单调性,不过可以想一下,用更多的钱买更少的东西肯定不划算,所以对后缀取(min)就有了单调性,二分即可。
T3
注意思考问题的本质,本题的本质其实就是留下所有(l<=q<=r)的边求直径,它又说(l,r<=n),即使没有这个条件也可以离散化,所以开一棵线段树然后线段树分治即可,注意将两个联通块合并之后直径的两个端点一定是原来的四个中的两个。
T4
肯定是要用加法将序列分开,因为乘法的优先级高,然后就是一个(dp)了,用前缀和优化掉就行。