zoukankan      html  css  js  c++  java
  • 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:以后文章的心路历程越来越少了,所以改叫题解吧

  • 相关阅读:
    Java日志体系(1) —— 那些年那些事,那些日志的历史
    直播工作原理
    【PAT乙级 】1003. 我要通过!
    [牛客网刷题]被3整除
    [牛客网刷题]牛牛找工作
    Mybatis的简单分析
    数位DP
    正则表达式
    能量球
    从此,我们相伴,不离不弃
  • 原文地址:https://www.cnblogs.com/AthosD/p/11648195.html
Copyright © 2011-2022 走看看