中文题面

这道题就是LightOJ某题的升级版

前段时间我是直接用√k前暴力后分块的处理方式,然后直接套个等差求和

这次看到了dalao的证明再次让我知道我好菜啊

在这里做下笔记,学习一下对于整除运算的分析方法

关于\([\frac{k}{i}]×i,i∈[1,n]\)的处理

令\(x∈[1,k],g(x)=[k/[k/x]],f(x)=k/x\)

有\(g(x) = [k/[f(x)]] ≥ [k/f(x)] = x\)

得到\(g(x) ≥ x\),换为底 \([k/g(x)]≤[k/x]\) ①

另一方面\([k/g(x)] = [k/[k/[k/x]]] ≥ [k/k*[k/x]] = [k/x]\) ②

由①②可知\(x∈[1,k]\)时,\([k/g(x)]=[k/x]\)

既对所有的\(i∈[x,g(x)],[k/i]=[k/x]\)

既计算的规模取决于\(i\)和\([k/i]\),

\(i≤\sqrt{k}\)时,计算规模为\(\sqrt{k}\)(可认为\(i\)逐一计算)

\(i>\sqrt{k}\)时,计算规模为\([k/i]\)的不同的值,\(max{{[k/i]}}<\sqrt{k}\),规模还是\(\sqrt{k}\)(分段计算)

这也是之前可以暴力分块的依据,实际运算的时候要注意防止越界(n)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,k,ans,gx,l,r,w,val;
while(cin>>n>>k){
ans=n*k;
for(int x=1; x<=n; x=gx+1){
val=k/x;
if(val==0) break;
gx=min(k/(k/x),n);
l=x,r=gx;
w=r-l+1;
ans -= val*(l+r)*w/2;
}
cout<<ans<<endl;
}
return 0;
}

BZOJ - 1257 分块 详解的更多相关文章

  1. Bzoj 1257 [CQOI2007]余数之和 (整除分块)

    Bzoj 1257 [CQOI2007]余数之和 (整除分块) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 一道简单题. 题目 ...

  2. Spring Boot异常处理详解

    在Spring MVC异常处理详解中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作.下图列出了Spring Boot中跟MVC异常处理相关的类 ...

  3. HTML标签----图文详解

    国庆节快乐,还在加班的童鞋,良辰必有重谢! 本文主要内容 头标签 排版标签:<p>     <br>     <hr>     <center>     ...

  4. HTTP Header详解(转载)

    HTTP Header详解 HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务 ...

  5. 【转】HTTP协议详解

    原文地址:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html 一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则 ...

  6. HTTP头部详解

    因为之后的HTTP头注入要学习这些所以就看了.觉得很不错,算是学习前的科普. <HTTP头部详解>转载自:http://www.cnblogs.com/lcamry/p/5763040.h ...

  7. Raid详解

    Raid详解 一.什么是RAID 磁盘阵列全名是『Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容错式廉价磁盘阵列. RAID 可以透过一 ...

  8. http协议详解<一>

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://7826443.blog.51cto.com/7816443/1729227 写在 ...

  9. H.264 基础及 RTP 封包详解

    转自:http://my.oschina.net/u/1431835/blog/393315 一. h264基础概念 1.NAL.Slice与frame意思及相互关系 1 frame的数据可以分为多个 ...

随机推荐

  1. 11-vector的使用

    C++ vector用法(详解!!函数,实现) 原创 2016年09月30日 01:13:40 7862 1,简述一下vector的基本操作,它的size,capacity(),clear,rever ...

  2. win32 多线程 (五)Event

    Event是内核对象,他可以分为自动和手动两种模式. HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManual ...

  3. python之连接oracle数据库

    环境: windows,python2.7 1.下载cx_Oracle 在windows下不要使用easy_install或者pip,因为这样安装不会同步环境,并报错: distutils.error ...

  4. FreeMarker 的空值处理 , 简单理解 , 不用TMD就会忘记

    NO.1 而对于FreeMarker来说,null值和不存在的变量是完全一样的 NO.2 ! 指定缺失变量的默认值 返回String NO.3 ?? 判断变量是否存在 返回boolean NO.4 $ ...

  5. TP5图片上传

    /*图片上传*/ public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('file'); // 移 ...

  6. 【Head First Java 读书笔记】(六)认识Java API

    第五章 使用Java函数库 ArrayList add(Object elem) remove(int index) remove(Object elem) contains(Object elem) ...

  7. Android Service基本知识总结(一)

    一.简介 Service是Android系统的后台服务组件,适用于开发无界面.长时间运行的应用功能Service特点如下: 没有用户界面 不会轻易被Android系统终止 在系统资源恢复后Servic ...

  8. FTP无法获取目录及文件

    在防火墙打开的情况下 如果不能获取,尝试将C:\windows\system32\svchost.exe 加入防火墙允许通道中. 并且设置为 主动模式

  9. TSQL--删除正在运行的数据库

    ); SET @dbName='DB1_SNAP' BEGIN TRY --===================================== --查找当前数据库所有连接并删除 DECLARE ...

  10. 没有为扩展名“.cshtml”注册的生成提供程序

    新建的mvc4 项目,然后从其他项目里拷贝shared文件夹和_ViewStart.cshtml文件过去,然后在@符号上出现“没有为扩展名“.cshtml”注册的生成提供程序” 解决方法: 需要在项目 ...