首页 > 其他分享 >小寄巧:整除分块

小寄巧:整除分块

时间:2023-01-10 18:24:10浏览次数:63  
标签:lfloor le frac 分块 rfloor 整除 小寄巧

事情的起源是这样的:

/被和谐部分/

然后写了这篇博客。


看一道题目:

\(\sum_{i=1}^{i \leq n} \lfloor \frac{n}{i} \rfloor\)

其中 \(1 \le n \le 1e9\)

发现有很多个 \(\lfloor \frac{n}{i} \rfloor\) 是相同的。

我们把相同的东西一起计算。算出相同的值的起点和终点。

然后想想,怎么算出终点。

打个表发现,起点到终点商一定,终点的余数最小,为 \(0\)。那么就是 \(\frac{n}{\frac{n}{l}}\)。

感性理解我不会证,时间复杂度降到了 \(O(\sqrt n)\)。


回到这道题

\(a_i \le b_i\) 的情况不用管。否则,我们要 \(\lfloor \frac{a_i}{k} \rfloor = \lfloor \frac{b_i}{k} \rfloor\),这兄弟才能靠先手优势补到刀。

然后用整除分块搞出来哪些东西满足条件,用线段树 ++,搞 \(n\) 次,满足条件的 \(k\) 就是 \(n\) 次都满足的。

就是这么个小寄巧,害得我小号被 Hack,没有一飞冲天。淦。

标签:lfloor,le,frac,分块,rfloor,整除,小寄巧
From: https://www.cnblogs.com/closureshop/p/17041049.html

相关文章

  • 数列分块:从入门到跑路——数列分块入门九题
    第一题区间加,单点询问首先讲讲数列分块是个啥。我们把数列分成一个个块,每个数属于块中的一部分。对于整块,我们有复杂度优秀的操作(一般是\(O(1)\)),对于散块,我们暴力......
  • 数论分块
    数论分块数论分块可以快速计算一些含有除法向下取整的和式(即形如\(\sum_{i=1}^{n}f(i)g\left(\left\lfloor\dfrac{n}{i}\right\rfloor\right)\)的和式)。当可以......
  • LOJ 数列分块入门 9 题解题报告
    LOJ数列分块入门9题解题报告\(\text{ByDaiRuiChen007}\)I.数列分块入门1题目大意\(\text{Link}\)维护一个长度为\(n\)的序列,支持区间加,单点查值思路分析简......
  • 整除
    一、定义1.整除:设a是非零整数,b是整数。如果存在一个整数q,使得b=a*q,那么就说b可被a整除,记作:a|b,读作:a整除b,且称b是a的倍数,a是b的约数(因子)。2.例子:3|12   21|63二、性......
  • 「学习笔记」分块
    树状数组、线段树、ST表……这些数据结构我们用的也不算少了,但实际上这些数据结构还不够灵活,面对一些区间问题时反而会出问题。举个栗子:现在有\(n\)个单调队列需要维......
  • 力扣---1262. 可被三整除的最大和
    给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。示例1:输入:nums=[3,6,5,1,8]输出:18解释:选出数字3,6,1和8,它们的和是18(可被3整除的最大和)。示例2......
  • 程序:在1——100中寻找能被三整除的数字
    #include<stdio.h>intmain(){inti=1;for(i=1;i<101;i++){if(i%3==0){printf("%d\n",i);}}return0;}......
  • 序列分块入门
    本文不涉及Ynoi大分块。分块简介对于一道数据结构题,如果常规思路(如线段树、BIT、ST表、主席树、平衡树、树套树、K-DTree等)不好做,我们可以考虑将序列分成\(B\)块,......
  • 【学习笔记】分块凸包
    啊啊啊啊我不会凸包啊啊啊啊啊啊凸包怎么学啊啊啊啊啊啊啊啊啊(已黑化好像很套路,用于解决一类区间加一段等差数列,求最大/最小值的问题。P4192旅行规划简单的题意转化,可......
  • 整除分块
    符号约定\(\left\lfloorx\right\rfloor\):\(x\)下取整。\(\left\{x\right\}\):\(x\)的小数部分。显然,对于\(\forallx\ge0,x\in\mathbb{Q}\),有\(x=\left\lfloorx\rig......