- 博客(36)
- 收藏
- 关注
原创 数学基础-整除和不定方程超详解
首先考虑无整数解的情况,根据贝祖定理,对于。所以不用担心是不是整数的问题。的特解,但是因为贝祖定理得。所以,对于任意整数对。
2024-04-14 13:10:40 839
原创 数据结构-堆详解
图片:二叉堆的父节点为这个子树的最值。如何维护它。我们发现它是一棵二叉树,那就自然满足若父节点为 xxx 则左儿子节点为 x×2x\times2x×2 右儿子为 x×2+1x\times 2 + 1x×2+1 这是显然的,但如果写成指针或结构体就太麻烦了,所以考虑用数组来维护它。用一个数组 TTT 来存储这颗二叉树,根节点为 T1T_1T1 根据二叉树的性质对于每个子节点 xxx 则有:这样做由于二叉树只有 log2n\log_2nlog2n 层,自然单次复杂度为 O(log2n)O(\log
2024-04-14 13:08:50 597 1
原创 ABC344E
当然也可以使用离散化来实现,具体的把所有的数来读入,排序后然后二分查找下标最后只会用。很大所有不能用数组,可以用。的大小的空间,复杂度也是。
2024-04-14 13:05:00 844
原创 进阶分块-分块二分详解
可以把每一个块内的元素排序,然后整块时直接二分答案,散块暴力处理,这样就能将时间复杂度降至。但这样是不容易过的,因此继续考虑优化它,不难想到,当整块时,块长越大,是基本不变的,但是可以减少块的数量,因此我们可以将块长设为。不难想到暴力,可以做到每次操作。每次询问给出三个整数。如果用分块该如何实现呢?这样做复杂度可以近似。
2024-04-14 13:02:06 871
原创 线段数:基础-进阶 原创超详解
树链剖分是一个常见的线段树与重链之间的组合的算法,他的思想是对于每一条链和一个子树,它在线段树上的标号总是连续的因此就可以用线段树的相关知识去实现快速的加减求和。每次维护一个区间的信息就会通过零块暴力,整块直接对这个块做标记,其实这个标记和线段树的懒标记是一样的道理。我们可以发现其实线段树就是将几个连续的小区间拼凑成一个个大区间的过程,从而实现查找时的优秀的复杂度。1.修改时如果是当前的区间完全覆盖线段树某一个节点所对应的区间,那么就将这个节点的。所对应的区间的每一个数的值统一加上。
2024-04-14 12:51:44 1576 1
原创 ABC346G
具体地,维护区间内最小值及其个数,查询时若区间最小值为。的矩形来计算重合的部分,(只不过是一维的)也可以用二维线段树的区间赋值,于是答案即为重合部分的面积,复杂度为。那么这个拓展的区间也是合法的区间。然后发现这个并集大小的维护实际上是要我们支持区间加 / 减查询区间非。都满足,同理右端点也一样,所以由乘法原理得所有满足的区间个数有。,则返回区间长度减去最小值个数,否则返回区间长度。扫一遍然后进行每个区间的特判即可,复杂度。应该满足的条件,显然,当有一个数。的出现次数有且仅出现一次。同理,往后的区间会是。
2024-04-14 12:49:08 478
原创 exgcd
但是这么做只能求出 $ax+by=\gcd(a,b)$ 的特解,并不能求出 $ax+by=c$ 的特解,但是因为贝祖定理得 $c=k\times\gcd(a,b),k\in Z$ 所以将两边同时乘 $c/\gcd(a,b)$ 因为 $c\mod\gcd(a,b)=0$ 所以 $c/\gcd(a,b)\in Z$。又因为 $x,y\in Z$ 所以 $x\times(c/\gcd(a,b))\in Z$ 同理 $y\times(c/\gcd(a,b))\in Z$。即:如果 $c\mod\gcd(a,b)!
2024-04-10 18:42:37 417
原创 数学基础1
但是这么做只能求出 $ax+by=\gcd(a,b)$ 的特解,并不能求出 $ax+by=c$ 的特解,但是因为贝祖定理得 $c=k\times\gcd(a,b),k\in Z$ 所以将两边同时乘 $c/\gcd(a,b)$ 因为 $c\mod\gcd(a,b)=0$ 所以 $c/\gcd(a,b)\in Z$。又因为 $x,y\in Z$ 所以 $x\times(c/\gcd(a,b))\in Z$ 同理 $y\times(c/\gcd(a,b))\in Z$。即 $B$ 是 $A$ 的倍数。
2024-04-10 18:37:59 406 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人