首页 > 编程语言 >类欧几里得算法

类欧几里得算法

时间:2024-01-30 17:11:06浏览次数:17  
标签:lfloor frac limits 欧几里得 rfloor 算法 sum bigg

模板题:P5170 【模板】类欧几里得算法

复述题解:

我们记 \(f(a,b,c,n)=\sum\limits_{i=0}^{n}\Big\lfloor \dfrac{ai+b}{c} \Big\rfloor\,,\ g(a,b,c,n)=\sum\limits_{i=0}^{n}i\Big\lfloor \dfrac{ai+b}{c} \Big\rfloor\,,\ h(a,b,c,n)=\sum\limits_{i=0}^{n}{\Big\lfloor \dfrac{ai+b}{c} \Big\rfloor}^2\)

第零部分·概况

基本上就是先把 \(a\) 和 \(b\) 对 \(c\) 取模,看看对答案的贡献,然后再推推式子,推出来可以递归求解的一个过程。

我们令两个神秘数字:

\[m=\bigg\lfloor\frac{an+b}{c} \bigg\rfloor\,,\,t=\bigg\lfloor\frac{jc+c+b-1}{a}\bigg\rfloor \]

第一部分·求解 \(f\)

取模部分

\[\begin{aligned} f(a,b,c,n)&=\sum\limits_{i=0}^{n}\bigg\lfloor \frac{ai+b}{c} \bigg\rfloor =\sum\limits_{i=0}^{n}\bigg\lfloor \frac{(\lfloor \frac{a}{c} \rfloor \cdot c + a\bmod c)i+(\lfloor \frac{b}{c} \rfloor \cdot c + b\bmod c)}{c} \bigg\rfloor \\ &=\sum\limits_{i=0}^{n}\bigg\lfloor \lfloor \frac{a}{c} \rfloor i+\lfloor \frac{b}{c} \rfloor+\frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor \\&= \sum\limits_{i=0}^{n} (\bigg\lfloor \frac{a}{c} \bigg\rfloor i+\bigg\lfloor \frac{b}{c} \bigg\rfloor+\bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor) \\&= \bigg\lfloor \frac{a}{c} \bigg\rfloor \big(\sum\limits_{i=0}^{n}i\big)+ \bigg\lfloor \frac{b}{c} \bigg\rfloor\big(\sum\limits_{i=0}^{n}1\big) + f(a\bmod c,b\bmod c,c,n) \\&= \frac{n(n+1)}{2} \bigg\lfloor \frac{a}{c} \bigg\rfloor+ (n+1)\bigg\lfloor \frac{b}{c} \bigg\rfloor + f(a\bmod c,b\bmod c,c,n)\end{aligned}\]

推式子部分

\[f(a,b,c,n)=\sum\limits_{i=0}^{n}\bigg\lfloor \frac{ai+b}{c} \bigg\rfloor = \sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor \frac{ai+b}{c} \rfloor-1}1 = \sum\limits_{j=0}^{\lfloor \frac{an+b}{c} \rfloor-1}\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor] \]

\[\begin{aligned} \because j<\lfloor\frac{ai+b}{c}\rfloor &\Leftrightarrow j+1\le\lfloor\frac{ai+b}{c}\rfloor \Leftrightarrow j+1\le \frac{ai+b}{c} \\ &\Leftrightarrow jc+c\le ai+b \Leftrightarrow jc+c+b\le ai \\ &\Leftrightarrow jc+c+b-1 <ai \Leftrightarrow \frac{jc+c+b-1}{a}<i \\ &\Leftrightarrow \lfloor\frac{jc+c+b-1}{a}\rfloor<i \Leftrightarrow t<i \end{aligned} \]

\[\begin{aligned} \therefore f(a,b,c,n)&=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}[t<i]=\sum\limits_{j=0}^{m-1}(n-t) \\&=nm- \sum\limits_{j=0}^{m-1 }\lfloor\frac{jc+c+b-1}{a}\rfloor \\&=nm - f(c,c+b-1,a,m-1) \end{aligned} \]

第二部分·求解 \(g\)

取模部分

\[\begin{aligned} g(a,b,c,n)&=\sum\limits_{i=0}^{n}i\lfloor \frac{ai+b}{c} \rfloor =\sum\limits_{i=0}^{n}i\bigg\lfloor \frac{(\lfloor \frac{a}{c} \rfloor \cdot c + a\bmod c)i+(\lfloor \frac{b}{c} \rfloor \cdot c + b\bmod c)}{c} \bigg\rfloor \\&= \sum\limits_{i=0}^{n} i(\bigg\lfloor \frac{a}{c} \bigg\rfloor i+\bigg\lfloor \frac{b}{c} \bigg\rfloor+\bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor) \\&= \bigg\lfloor \frac{a}{c} \bigg\rfloor \big(\sum\limits_{i=0}^{n}i^2\big)+ \bigg\lfloor \frac{b}{c} \bigg\rfloor\big(\sum\limits_{i=0}^{n}i\big) + g(a\bmod c,b\bmod c,c,n) \\&= \frac{n(n+1)(2n+1)}{6}\bigg\lfloor \frac{a}{c} \bigg\rfloor + \frac{n(n+1)}{2}\bigg\lfloor \frac{b}{c} \bigg\rfloor\ + g(a\bmod c,b\bmod c,c,n) \end{aligned}\]

推式子部分

\[\begin{aligned} g(a,b,c,n)&=\sum\limits_{i=0}^{n}i\bigg\lfloor \frac{ai+b}{c} \bigg\rfloor = \sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor \frac{ai+b}{c} \rfloor-1}i = \sum\limits_{j=0}^{\lfloor \frac{an+b}{c} \rfloor-1}\sum\limits_{i=0}^{n}[j<\lfloor\frac{ai+b}{c}\rfloor]i \\&=\sum\limits_{j=0}^{m-1}\sum\limits_{i=0}^{n}[t<i]i =\sum\limits_{j=0}^{m-1}\sum\limits_{i=t+1}^{n}i=\sum\limits_{j=0}^{m-1}\frac{(t+1+n)(n-t)}{2} \\&=\frac{1}{2}\sum\limits_{j=0}^{m-1}\Big(nt+n+n^2-t^2-t-nt\Big) \\&=\frac{1}{2}\sum\limits_{j=0}^{m-1}\Big(n^2+n-t^2-t\Big) \\&=\frac{1}{2}\Big(nm(n+1)-\sum\limits_{j=0}^{m-1}t^2-\sum\limits_{j=0}^{m-1}t\Big) \\&=\frac{1}{2}\Big(nm(n+1)-h(c,c-b-1,a,m-1)-f(c,c-b-1,a,m-1)\Big) \end{aligned}\]

第三部分·求解 \(h\)

取模部分

\[\begin{aligned} h(a,b,c,n) =&\sum\limits_{i=0}^{n}\lfloor \frac{ai+b}{c} \rfloor^2 =\sum\limits_{i=0}^{n}\bigg\lfloor \frac{(\lfloor \frac{a}{c} \rfloor \cdot c + a\bmod c)i+(\lfloor \frac{b}{c} \rfloor \cdot c + b\bmod c)}{c} \bigg\rfloor^2 \\=& \sum\limits_{i=0}^{n} (\bigg\lfloor \frac{a}{c} \bigg\rfloor i+\bigg\lfloor \frac{b}{c} \bigg\rfloor+\bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor)^2 \\=& \sum\limits_{i=0}^{n} ( \bigg\lfloor \frac{a}{c}\bigg\rfloor^2i^2+ \bigg\lfloor \frac{b}{c} \bigg\rfloor^2+ \bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor^2 + 2\cdot\bigg\lfloor \frac{a}{c}\bigg\rfloor i \bigg\lfloor \frac{b}{c} \bigg\rfloor \\&+2\cdot\bigg\lfloor \frac{a}{c}\bigg\rfloor i \bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor+ 2\cdot \bigg\lfloor \frac{b}{c} \bigg\rfloor \bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor ) \\=&\bigg\lfloor \frac{a}{c}\bigg\rfloor^2\frac{n(n+1)(2n+1)}{6}+ \bigg\lfloor \frac{b}{c} \bigg\rfloor^2 (n+1)+h(a\bmod c,b\bmod c,c,n) +2\bigg\lfloor \frac{a}{c}\bigg\rfloor\bigg\lfloor \frac{b}{c} \bigg\rfloor \frac{n(n+1)}{2} \\& + 2\bigg\lfloor \frac{a}{c}\bigg\rfloor \sum\limits_{i=0}^{n}i\bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor + 2\bigg\lfloor \frac{b}{c} \bigg\rfloor\sum\limits_{i=0}^{n}\bigg\lfloor \frac{(a\bmod c)i+(b\bmod c)}{c} \bigg\rfloor \\=&\bigg\lfloor \frac{a}{c}\bigg\rfloor^2\frac{n(n+1)(2n+1)}{6}+ \bigg\lfloor \frac{b}{c} \bigg\rfloor^2 (n+1)+h(a\bmod c,b\bmod c,c,n) +\bigg\lfloor \frac{a}{c}\bigg\rfloor\bigg\lfloor \frac{b}{c} \bigg\rfloor n(n+1) \\& + 2\bigg\lfloor \frac{a}{c}\bigg\rfloor g(a\bmod c,b\bmod c,c,n) + 2\bigg\lfloor \frac{b}{c} \bigg\rfloor f(a\bmod c,b\bmod c,c,n) \end{aligned}\]

推式子部分

这里要用到一个神秘的东西:

\[n^2=2\cdot\frac{n(n+1)}{2}-n=(2\sum\limits_{i=0}^{n}i)-n \]

\[\begin{aligned} g(a,b,c,n)=&\sum\limits_{i=0}^{n}\bigg\lfloor \frac{ai+b}{c} \bigg\rfloor^2 =\sum\limits_{i=0}^{n}\Big(2\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor}j-\Big\lfloor\frac{ai+b}{c}\Big\rfloor\Big) \\=&2\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor}j-\sum\limits_{i=0}^{n} \Big\lfloor\frac{ai+b}{c}\Big\rfloor \\=& 2\sum\limits_{i=0}^{n}\sum\limits_{j=0}^{\lfloor\frac{ai+b}{c}\rfloor -1}(j+1)-f(a,b,c,n) \\=& 2\sum\limits_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}(j+1)\sum\limits_{i=0}^{n}[j<\Big\lfloor\frac{ai+b}{c}\Big\rfloor] -f(a,b,c,n) \\=& 2\sum\limits_{j=0}^{m-1}(j+1)\sum\limits_{i=0}^{n}[i>t] -f(a,b,c,n) \\=& 2\sum\limits_{j=0}^{m-1}(j+1)(n-t) -f(a,b,c,n) \\=& 2\sum\limits_{j=0}^{m-1}\Big(n(j+1)-tj-t\Big) -f(a,b,c,n) \\=& 2\Big(n\sum\limits_{j=0}^{m-1}(j+1) -\sum\limits_{j=0}^{m-1}tj-\sum\limits_{j=0}^{m-1}t\Big) -f(a,b,c,n) \\=& 2\Big(n\sum\limits_{j=1}^{m}j -g(c,c-b-1,a,m-1)-f(c,c-b-1,a,m-1)\Big) -f(a,b,c,n) \\=& 2 n\frac{m(m+1)}{2} -2g(c,c-b-1,a,m-1)-2f(c,c-b-1,a,m-1)-f(a,b,c,n) \\=& 2 nm(m+1) -2g(c,c-b-1,a,m-1)-2f(c,c-b-1,a,m-1)-f(a,b,c,n) \end{aligned}\]


终于!!!我写完了这刘拓世!!!我真的自己也不想再看它一眼了……

我们发现这三个函数的计算过程都是在递归,而且传下去的内容也一样,于是我们把这三个的计算扔进一个函数里,一同计算。

这样这个模板题就做完了,提交记录

以上便是我此时此刻对这玩意的全部理解,只会模板题。


标签:lfloor,frac,limits,欧几里得,rfloor,算法,sum,bigg
From: https://www.cnblogs.com/baoyangawa/p/17997360

相关文章

  • PBKDF2算法:保护密码安全的重要工具
    摘要:在当今的数字世界中,密码安全是至关重要的。为了保护用户密码免受未经授权的访问和破解,Password-BasedKeyDerivationFunction2(PBKDF2)算法成为了一种重要的工具。本文将介绍PBKDF2算法的优缺点,以及它如何解决密码存储和验证中的一些问题。我们还将提供一个使用Java编......
  • 【机器学习】常见算法详解第2篇:KNN之kd树介绍(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • 白话机器学习算法入门笔记
    机器学习中常见的十大算法包括:1.线性回归(LinearRegression)-用于预测连续值的简单线性回归模型。2.逻辑回归(LogisticRegression)-用于分类问题的logistic回归模型。3.决策树(DecisionTree)-一种流行的树形分类与回归方法。4.支持向量机(SVM)-一种二分类模型,Fi......
  • 代码随想录算法训练营第六天 |242. 有效的字母异位词 349. 两个数组的交集 202. 快乐
    1.两数之和 已解答简单 相关标签相关企业 提示 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同......
  • 基于注意力机制与改进TF-IDF的推荐算法
    前言本篇文章是2020年8月发表于《计算机工程》的一篇期刊论文,文章名称《基于注意力机制与改进TF-IDF的推荐算法》。文章针对传统推荐系统主要依赖用户对物品的评分数据而无法学习到用户和项目的深层次特征的问题,提出基于注意力机制与改进TF-IDF的推荐算法(AMITI)。将双层注意力......
  • 算法模板 v1.5.1.20240130
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 文心一言 VS 讯飞星火 VS chatgpt (189)-- 算法导论14.1 6题
    六、用go语言,在OS-SELECT或OS-RANK中,注意到无论什么时候引用结点的size属性都是为了计算一个秩。相应地,假设每个结点都存储它在以自己为根的子树中的秩。试说明在插入和删除时,如何维护这个信息。(注意,这两种操作都可能引起旋转。)文心一言:在OS-SELECT和OS-RANK中,我们维护一个树形结......
  • (算法)高精度运算
    为什么要有高精度就是因为当数字长度很长的时候都超过了longlong了那么我们就可以通过开数组,集合等方式运算,其原理就是小学生的竖式运算,没想到一个竖式运算竟然可以这么恶,现在的算法已经折磨了后面的路不好走了……先来搞一下+,-,*,/的高精度运算(都是高进度之间的运算),其实就是进位,取......
  • 如何评价搜索算法的好坏?多角度解析
    前言大家好,我是chowley,搜索算法无处不在,程序员中比较高级的算法工程师,也大多数是做搜推广方向的,今天我就简单讲解一下,如何评价搜索算法!评价搜索算法搜索算法影响着用户的搜索体验和信息获取效率。在评价搜索算法的好坏时,需要从多个角度综合考量。本文将从准确性、排序质量、响......
  • day27 代码随想录算法训练营 39. 组合总和
    题目:39.组合总和我的感悟:还是没太理解这个index和i的区别感觉要继续听继续做剪枝要进行排序,这题,我先理解到不剪枝的版本就行 代码示例:classSolution:defcombinationSum(self,candidates:List[int],target:int)->List[List[int]]:res=[]......