csps模拟测试67
T1:%%%%BARCA考场怒切。
联赛数学题不是很常见。
$a+b<=n$且$(a+b)|ab$
既然要简化问题就要让他们除以gcd(a,b)以后互质
于是有了$(a'+b')*d|a'b'd^2$
同时约掉一个d$(a'+b')|a'b'd$
这是要有一个结论才能达到我们最终的目的。
由$gcd(a',b')=1$得到$gcd(a'+b',a'(b'))=1$得到$gcd(a'+b',a'b')=1$
所以$(a'+b')|d$,其实这是最终想要的,
因为一开始的$(a'+b')*d=a+b$所以这样就可以设$k(a'+b')=d$
然后通过不等关系得到$k(a'+b')^2=a+b<=n$出了平方就有根号复杂度了。
考虑枚举每个$i=(a'+b')$然后就可以得到$k=\frac{n}{i^2}$个解,然后在考虑内部$a'b'$有多少对,仍然用辗转相除可以得到是欧拉函数。
$\sum \limits_{i=1}^{\sqrt{n}} \frac{n}{i^2} \phi{(i)}$
T2:SB题 $O(nlogn)$求最长上升子序列。随便优化
T3:好题,如何考虑性质。
既然是斐波那契数肯定和斐波那契数列有关。而且构树方法很有规律,也就是说这棵树和子树长得一样
找一找那个和斐波那契有关,手画一下发现,对于一颗以黑点为根的树,其中距离根为i的白点的个数是斐波那契,
考虑这个东西进行转移并计数
设$f[i][0/1]$表示根为白点,距离根为i的白/黑点个数。$g[i]$表示根为黑点,距离根为i的白点个数。
ps:(dp定义利用了原树与子树的相同,所以不用确定根)
首先分类,对于具有相似性的一类一起统计,首先两个白点在一条祖先链上。
那么就可以得到,$\sum \limits_{i=1}^{n-1} f[i]\sum \limits_{j=0}^{n-i+1} f[j]$、
就是枚举距离(i),再枚举位置(j) 理解的时候注意根不是定的,但是对于任意一个根只要颜色相同,我需要的方案数就一样。
然后两个白点不再某一个的祖先链上,那么一定以黑点为LCA
这时候$f[i][1]$的意义就明了了,仍然是枚举长度,然后枚举位置,
$\sum \limits_{i=1}^{2n} \sum \limits_{k=1}^{i-1} g[i-k-1]*f[k-1] \sum \limits_{j=1}^{n-2-max(i-k-1,k-1)} f[j][1]$