最近中考放假几天都在怼一道BJOI2018的水题,但卡死在90pts跑不动啊!

然后今天发现终于过了然而Hack的数据全RE了然后就开始找新的题目来找回信心。

然后发现智能推荐里有这道题,然后想了1min才想到CQOI到底是哪里的原来是重庆呵

其实还是一道比较好的除法分块入门题。动一下脑子就可以做了。

我们先观察一下最基础的式子:

\(\sum_{i=1}^n k\ mod\ i\)

然后我们利用取余的基本性质,即\(k\ mod\ i=k-i\lfloor\frac{k}{i}\rfloor\),把原式化为:

\(\sum_{i=1}^n k-i\lfloor\frac{k}{i}\rfloor\),然后把k提取出来,即有\(nk-\sum_{i=1}^n i\lfloor\frac{k}{i}\rfloor\)

然后我们考虑如何求解\(\sum_{i=1}^n i\lfloor\frac{k}{i}\rfloor\),而求它的关键就在于这个\(\lfloor\frac{k}{i}\rfloor\)

我们令\(t=\lfloor\frac{k}{i}\rfloor\),然后我们通过样例\(k=5\)的情况来观察一下规律:

\(i\) \(1\) \(2\) \(3\) \(4\) \(5\) \(6\) \(7\) \(8\) \(9\) \(10\)
\(t\) \(5\) \(2\) \(1\) \(1\) \(1\) \(0\) \(0\) \(0\) \(0\) \(0\)

手玩找规律一下可以发现一个显然的性质所有的\(t\)都是连续的一段

然后我们考虑把所有相同的\(t\)都一起计算,这样我们可以估计它的复杂度大约为\(O(\sqrt n)\)

然后我们令我们当前处理的区间左端为\(l\),然后我们想一下如何推出\(r\)然后我们继续手玩发现

  • 当\(t=0\)时,\(r=n\)
  • 当\(t\ne 0\)时,\(r=min(n,\lfloor\frac{k}{t}\rfloor)\)

然后这样我们下一次操作只要使\(l=r+1\)即可

然后对于每一块内,我们计算它们的和:

\(sum=\frac{t\cdot (r-l+1)\cdot (l+r)}{2}\)

然后我们就做下去即可附上超级精简CODE

#include<cstdio>
using namespace std;
long long n,k,t,ans,l,r;
inline int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
scanf("%lld%lld",&n,&k); ans=n*k;
for (l=1;l<=n;l=r+1)
t=k/l,r=t?min(n,k/t):n,ans-=t*(r-l+1)*(l+r)>>1;
printf("%lld",ans);
}

最新文章

  1. NodeJS 学习总结 01 安装配置
  2. 转载请注明出处: https://github.com/qiu-deqing/FE-interview
  3. 设置windows开机自启某个软件
  4. c++聪聪看书(低数据版代码)
  5. Linux下Tomcat服务器重启与关闭
  6. Linux上的free命令详解
  7. hdu---(5038)Grade(胡搞)
  8. 1.PHP站内搜索 分类: PHP开发实例 2015-07-31 22:48 4人阅读 评论(0) 收藏
  9. hdoj 2031 进制转换
  10. 20个可以帮你简化iOS app开发流程的工具
  11. 【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大
  12. 两个队列实现一个栈,剑指offer P59
  13. leetcode143. Reorder List
  14. 防止shell script多次运行
  15. webpack 笔记
  16. 小甲鱼Python第十一讲课后习题
  17. ECMAScript正则表达式6个最新特性
  18. Spring boot 通用配置文件模板
  19. c语言中的内存分配malloc、alloca、calloc、malloc、free、realloc、sbr
  20. MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九

热门文章

  1. 编写xml文件不当时会出现R文件找不到情况
  2. 《R数据挖掘入门》彩色插图(第9章)
  3. centos7安装rabbitmq 总结
  4. &lt;!DOCTYPE&gt;标签与table高度100% (转)
  5. July 10th, Week 29th Sunday, 2016
  6. IO流_PrintWriter(字符打印流)与PrintStream(字节打印流)
  7. web socket RFC6455 frame 打包、解包
  8. Servlet的生命周期以及在Spring MVC中调用流程
  9. Github(1) 桌面版使用
  10. 报表嵌入到.net系统页面