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的更多相关文章

  1. 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 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

随机推荐

  1. Unity —— 通过鼠标点击控制物体移动

    //ClickMove - - 通过鼠标点击控制物体移动 using System.Collections; using System.Collections.Generic; using Unity ...

  2. LJ语录

    "保持安静,不要打扰我睡觉." ( 半分钟后) "哎呦喂~可以睡觉喽~" "考场上遇到这种题目,你们应该高兴." "因为考场上那群 ...

  3. sklearn中的交叉验证(Cross-Validation)

    这个repo 用来记录一些python技巧.书籍.学习链接等,欢迎stargithub地址sklearn是利用python进行机器学习中一个非常全面和好用的第三方库,用过的都说好.今天主要记录一下sk ...

  4. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  5. 关于cisco路由器配置的一些参数

    单臂路由设置 Switch(config-if)#no switchport Switch(config)#ip routingSwitch(config)#interface FastEtherne ...

  6. “Hello World!”团队第五周第五次会议

    博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.checkout&push代码 一.会议时间 2017年11月14日  ...

  7. 【每日scrum】NO.9

    (1)这是我们冲刺的最后一天,晚上我们的团队进行了收尾工作:第一阶段的任务基本完成,软件主要实现了校园景点照片以及对应的介绍,查询最短路径,查询涉及相关景点的查询,查询全部路径,基本界面的设计,导航功 ...

  8. GIT团队实战博客

    项目要求 组长博客 遇到的困难及解决办法 组员1(组长):王彬 遇到的困难  在团队任务分工的时候没有充分照顾到所有人,导致队员们的工作量不均. 现场编程时间不够 解决办法 在此对组员们表示抱歉,由于 ...

  9. lintcode-451-两两交换链表中的节点

    451-两两交换链表中的节点 给一个链表,两两交换其中的节点,然后返回交换后的链表. 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. ...

  10. 在.net项目中使用Consul

    1.创建.net core web程序并运行 2.在Consul中注册该服务 Consul支持两种服务注册的方式,一种是通过Consul的服务注册HTTP API,由服务自身在启动后调用API注册自己 ...