首页 > 编程语言 >【ACM算法】整数分块

【ACM算法】整数分块

时间:2023-10-05 16:24:18浏览次数:39  
标签:10 分块 整数 算法 ACM 计算

思考如何计算以下算式:

\[\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor \qquad (n \le 10^6) \]

所有人都会觉得这个非常简单,一个for循环可以直接解决,时间复杂度 \(O(n)\),但是如果将 \(n\) 的范围改大一点点,改成 \(n\leq 10^{12}\) 呢?这时如果我们用朴素算法一定会T;

但是我们可以手打个表看看规律,以 \(n =10\) 为例:

img

容易发现:

img

这样我们就把10的计算转化为只需要5次的计算:

img

核心代码:

ll res = 0;
for(int l = 1, r; l <= n; l = r + 1)
{
	r = n / (n / l);//定义右边界 
	res += (r - l + 1) * (n / l);
}

例题:newcoder Dividing

参考博客:https://blog.csdn.net/pythpnhh/article/details/119805692

标签:10,分块,整数,算法,ACM,计算
From: https://www.cnblogs.com/marti88414/p/17743475.html

相关文章

  • The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup
    The2018ACM-ICPCAsiaQingdaoRegionalContest,Online(The2ndUniversalCup.Stage1:Qingdao)J-PresstheButton\(1\leqa,b,c,d\leq10^6\)题解容易发现存在循环节,每次位于\(gcd(a,c)\)的倍数的位置所以我们考虑处理一个循环节内的情况如果\(v\le......
  • 10.5算法
    对称二叉树给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false 提示:树中节点数目在范围[1,1000]内-100<=Node.val<=100 /** * Definition for a binary tree......
  • 【知识点】如何找到正确的算法?
    算法思路一、多组查询·考虑如何利用已知信息避免重复查询。·考虑各种预处理,例如前缀和。二、规模减小·考虑树、链等三、以小见大·考虑特殊情况,并考虑以此为基础继续转移四、模拟优化·考虑高维复杂度算法,并考虑尽可能优化五、题面信息·数据规模\[n≥10......
  • 【知识点】如何找到正确的算法?
    #算法思路**一、多组查询**·考虑如何利用已知信息避免重复查询。·考虑各种预处理,例如前缀和。------------**二、规模减小**·考虑树、链等------------**三、以小见大**·考虑特殊情况,并考虑以此为基础继续转移------------**四、模拟优化**·考虑高维复杂度......
  • 【基础算法】排序算法 —— 插入排序
    一、算法原理插入排序将数组分为已排序区间和未排序区间,初始已排序区间只有数组第1个元素,未排序区间从下标1开始到数组末尾。每次取未排序区间的第1个元素,将它插入已排序区间的合适位置,并保证已排序区间一直有序。重复这个过程,直到未排序区间为空,算法结束。给有序数组(已排序区......
  • 【基础算法】排序算法 —— 选择排序
    一、算法原理选择排序将数组分为已排序区间和未排序区间,每次选择未排序区间的最小元素,将它放到已排序区间末尾。一次选择会让一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序。 示例:使用选择排序对数组arr=[4,5,6,3,2,1]从小到大排序。第1次选择:第2次选择:......
  • 【基础算法】排序算法 —— 冒泡排序
    一、算法原理冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,如果不满足大小关系要求,就进行交换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序。 示例:使用冒泡排序对数组arr=[4,5,6,3,2,1]从小到大排序。第1次......
  • 稳定婚姻问题(Gale-Shapley算法)
    前言今天duck、香饽饽老板和彬彬一起出了个模拟赛,赛时T2想到了跟正解很接近的做法,但最后还是打挂了then喜提0pts,后面duck讲题的时候才知道是稳定婚姻板题。看完证明之后觉得很妙,遂开坑。只是简单整理,图一乐子吧算是。说是稳定婚姻问题,但其实我觉得更合适的叫法是属性稳定分......
  • 【基础算法】排序算法
    一、排序算法简介排序是对批量数据按照一定的顺序进行排列的操作。1.1学习排序算法的要点算法原理、代码实现、评价算法优劣。1.2评价排序算法的优劣排序算法的优劣可以从以下3个方面进行评价:时间性能:最好、最坏、平均时间复杂度;内存占用:是否原地排序,原地排序算法,......
  • C/C++学习 -- 分组加密算法(DES算法)
    数据加密标准(DataEncryptionStandard,DES)是一种对称密钥加密算法,是信息安全领域的经典之作。本文将深入探讨DES算法的概述、特点、原理,以及提供C语言和C++语言实现DES算法的代码案例。一、DES算法概述DES算法是一种对称密钥加密算法,由IBM于1977年开发并于1977年被美国国家标准局(NI......