zoukankan      html  css  js  c++  java
  • bzoj3748 Kwadraty

    Claris 当然是要用来%的

    但是,,其他dalao,,比如JL的红太阳commonc。题解能不能稍微加几句话,蒟蒻看不懂啊。

    在这里解释一下,Claris的题解。(因为我弱,想了半天才明白,所以觉得有必要写一下

    首先,表是怎么打的?

    1e18,暴力吗?

    对于小范围打表

    设f(x)=12+22+....+x2=x*(x+1)*(2x+1)/6

    找到一个t使得 f(t-1)+1<=n<=f(t)

    设F(n)=a12+a22+...=n 就是n可以由a1,a2等不同整数的平方凑出,且最大的数最小。

    则 F(n)=f(t)-F(f(t)-n)

    所以只要f(t)-n能凑出来,n也一定能凑出来。

    同理对于任意正整数k 当0<=f(k)-n<n 能被凑出来时,n就可以被凑出来。

    设当前为止最大不能被凑出来的数是maxn

    只要能找到k使得 maxn<f(k)-n<n即可

    如何证明当n较大时不存在凑不出的情况呢?

    当n较大时 n<f(t)<f(t+1)<2*n

    所以只要(t+1)的平方大于maxn就可以说明之后所有的n都能被凑出,且最大的数最小为t或t+1

    通过打表发现,maxn=128,当t>=11的时候n一定会被凑出。

    f(11)=506 这就是506的来历。

    所以凑出n就可以二分找出t然后判断f(t)-n能否被凑出。

    对于第二问。

    可以发现,对于一串数,f(t)是相同的,这一串数中较小的128个中一定会有31个数x使得f(t)-x不能被凑出,而这些数就是超重的数。

  • 相关阅读:
    Centos7.2安装MariaDB数据库,并进行基础配置
    Web安全之环境搭建
    PHP构建一句话木马
    Spark2.1.0安装
    Spark2.1.0编译
    cdh-5.10.0搭建安装
    八、频繁模式挖掘Frequent Pattern Mining
    七、特征提取和转换
    六、降维
    五、聚类
  • 原文地址:https://www.cnblogs.com/Amphetamine/p/8890838.html
Copyright © 2011-2022 走看看