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分:
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:以后文章的心路歷程越來越少了,所以改叫題解吧