2019.10.10题解

A. 神炎皇

考场思路:

分块打表,复杂度O(k*n),k开500拿掉40分溜了


60分:

$$ sum_{i=1}^{n}sum_{j=1}^{i-1}[((i-j)*j)mod(i)==0] $$

$$ sum_{i=1}^{n}sum_{j=1}^{i-1}[(j*j)mod(i)==0] $$

设j*j/i=k,改为枚举i,k,则有:

$$ sum_{i=1}^{n}sum_{k=1}^{i-1}[i*k==sqrt(i*k)*sqrt(i*k)] $$

即i*k为平方因子

考虑处理第二个$ sum $的前缀和,首先要求出i去除平方因子后的x,那么$ k=x*y^2 $,O(1)求出即可


80分:

DeepinC写了快去%他


100分:

设d=(a,b),x=a/d,y=b/d,(x,y)==1

所以有x+y|x*y*d

由更相减损术(x,y)=(x+y,x)=(x+y,y)=1,那么便有x+y|d

考虑枚举k=x+y<=sqrt(n),x,y的点对数便有phi(x)个

d有n/(k*k)个(k*k*d'<=n),复杂度$ O(sqrt(n)) $

B. 降雷皇

简单DP+树状数组即可

C. 幻魔皇

性质1:每层的黑白点的贡献分别相同

性质2:每层黑点白点的个数也是Fibonacci数列

设g[i],f[i],h[i]分别为黑根白点,白根黑点,白根黑点的个数,根据性质2可以O(n)预处理

1>lca为白点

$$ ans[i]+=f[i]*sum_{j=0}^{n-i-1}f[j] $$

2>lca为黑点

$$ ans[i]+=sum_{j=i-n-2}^{min(n,i)}f[j-1]*g[i-j-1]*sum_{k=1}^{min(n-i+j-1,n-j-1)}h[k] $$

感谢猿小鲲大婶助我颓懂题解

ps:以后文章的心路历程越来越少了,所以改叫题解吧

原文地址:https://www.cnblogs.com/AthosD/p/11648195.html