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不能被凑出,而这些数就是超重的数。
bzoj3748 Kwadraty的更多相关文章
- BZOJ3748 : [POI2015]Kwadraty
打表可得结论: 1.只有2,3,6,7,8,11,12,15,18,19,...,108,112,128这31个数的k值是无穷大 2.当n足够大的时候,即当n>506时,设$f(x)=1^2+2 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- Mac下布置appium环境
1.下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githu ...
- 4.1 所有类型都从 System.Object 派生
"运行时"要求各个类型最终都从 System.Object 派生.(显示继承/隐式继承) 提供公共方法(public): Equals 判断两个对象相等,true 表示相等. Ge ...
- 【Python入门学习】列表生成和函数生成器的方式实现杨辉三角
列表生成: L = [i for i in range(10)] 列表生成器: g = (i for i in range(10)) 函数生成器使用的关键字yield实现 例如fib生成器 def f ...
- leetcode个人题解——#34 Find First and Last Position of Element in Sorted Array
思路:先二分查找到一个和target相同的元素,然后再左边二分查找左边界,右边二分查找有边界. class Solution { public: , end = -; int ends; int lS ...
- 如何开发一个 PyCharm 插件
PyCharm 是很多 Python 开发者优先选择的 IDE,功能强大,跨平台,提供免费社区版,非常良心.如果你想自己给PyCharm添加一些功能怎么办呢?有两个办法: 通过提需求实现,到 JetB ...
- mariadb BINLOG_FORMAT = STATEMENT 异常
当在mariadb中插入数据是报 InnoDB is limited to row-logging 异常: java.sql.SQLException: Cannot execute statemen ...
- win10 tomcat不能访问问题
问题描述:电脑是Win10系统的,安装了Tomcat后,本机通过80端口能顺利访问.但局域网内的其他机器却无法访问这台电脑的Tomcat服务. 故障分析: 将防火墙关闭后,可以访问,所以问题就出在防火 ...
- [python][odlboy]设置字符串打印的颜色
格式:\033[显示方式;前景色;背景色m 说明:前景色 背景色 颜色---------------------------------------30 ...
- 复利计算器4.0之再遇JUnit
复利计算器4.0之再遇JUnit 前言 虽然之前的复利计算器版本已经尝试过使用JUnit单元测试,但由于没有系统性地学习过JUnit的使用,用得并不好,主要问题表现在测试的场景太少,并没有达到测 ...
- Python学习之路8 - 内置方法
abs(-230) #取绝对值 all([0,1,-5]) #如果参数里面的所有值都为真就返回真,否则返回假 any([0,1,-5]) #如果参数里面有一个值为真则返回真,否则返回假 ascii([ ...