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:以后文章的心路历程越来越少了,所以改叫题解吧

posted @ 2019-10-10 15:53  ATHOSD  阅读(135)  评论(17编辑  收藏  举报