- 博客(13)
- 收藏
- 关注
原创 乘法逆元(费马小定理)
费马小定理:在数论中,如果a是一个整数,p是一个质数,那么。对p取余,和 a对 p取余,余数相等。mod p等于0(a是 p的倍数,那么。也为p的倍数),a mod p也等于0。(mod p),符号。那么我们可以生成一个表格。
2024-06-01 12:45:18
335
原创 2022ICPC区域赛G题(杭州站)
思路分析:要想平均攻击力最大,那么每次遇到零时,如果cnt(野兽数量大于2)可以就进行操作 -1,但是如果后面出现操作 -1,而此时你的野兽数量并不能进行合并(数量为1时),那就无法通过路径。原题概括:初始时,你有一个野兽,攻击力为1,现在给你一条有n个操作的路径,你将进行n个操作,要求野兽的平均攻击力最大,如果未通过这条路径,则输出-1,通过了就输出一个分数,sum(攻击力总和)/cnt(宠物数量),要求是最简分数。操作 -1:选择两只野兽进行仪式,将失去一个野兽,而它的攻击力可以加给另一个。
2024-05-31 18:51:18
260
原创 快速幂算法
快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法之所以时间复杂度非常高(为O(指数n)),就是因为当指数n非常大的时候,需要执行的循环操作次数也非常大。所以我们快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。
2024-05-24 11:26:33
407
原创 c++去重函数unique
开始向后比较,遇到重复元素忽略,遇到不同元素,就把这个不同元素存入 t 数组,同时再。unique去重区间左闭右开(和sort)一样。永远不会被存入,直接手动加上就行了。1.头文件n是:最后一个不重复数字的下标。不过一般在进行去重时先排序。重不重复都要加,这是因为。存入 t 数组,所以。
2024-05-22 19:51:23
255
1
原创 辗转相除法求最大公约数
辗转相除法,又称欧几里德算法(Euclidean Algorithm),是求两个数的最大公约数(greatest common divisor)的一种方法。用较大的数除以较小的数,再以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。求30和18的最大公约数:30 / 18 = 1 余 1218 / 12 = 1 余 612 / 6 = 2 余 0所以,30和18的最大公约数为6。如果用小数除以大数,只是过程多了一步,结果没有差别,所以写代码时不用考虑两个数的大小。
2024-05-20 18:23:35
219
1
原创 前缀和(一维和二维)
前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和,而差分可以看成前缀和的逆运算。将差分数组进行前缀和就可以得到原数组,合理的使用前缀和与差分,可以将某些复杂的问题简单化,降低程序的时间复杂度。
2024-05-06 18:07:58
981
1
原创 高精度算法(加,减,乘,除)
高精度算法是处理大数字的数学计算方法,一般几位或者十几位数字,我们可以进行计算,但如果是几百位甚至是几千位数字,我们就要用高精度算法进行计算,但往往这个算法不会单独进行考察,而是和其他算法一起考。
2024-04-29 15:05:46
345
原创 时间复杂度的计算
由于本人也是初学者,所以本篇对时间复杂度进行简单的介绍衡量算法的效率一般是从时间和空间两个维度去考虑的,在正常情况下我们一般不考虑空间复杂度,我们只需要关注算法的时间复杂度就行了。
2024-03-31 21:19:36
310
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人