摘要:
模拟又炸了,我死亡 $exgcd$(扩展欧几里德算法)用于求$ax+by=gcd(a,b)$中$x,y$的一组解,它有很多应用,比如解二元不定方程、求逆元等等,这里详细讲解一下$exgcd$的原理。 了解$exgcd$算法前,需要$gcd$算法做铺垫。gcd,又称辗转相除法,用于计算两个整数 $a, 阅读全文
摘要:
今天模拟惨啊...被数论水题虐炸了...+红名祭 定理 若有 𝑝1, 𝑝2 … 𝑝𝑛 互质,则对于同余方程组: 𝑥 ≡ 𝑎1 𝑚𝑜𝑑 𝑝1 … 𝑥 ≡ 𝑎𝑛 𝑚𝑜𝑑 𝑝𝑛 在模 𝐿𝐶𝑀 = 𝑝1 ∗ ⋯ ∗ 𝑝𝑛 的 阅读全文
摘要:
传送门 二维平面修改+查询,cdq分治可以解决。 求关于某个点曼哈顿距离(x,y坐标)最近的点——dis(A,B) = |Ax-Bx|+|Ay-By| 但是如何去掉绝对值呢? 查看题解发现假设所有的点都在查询点的左下方,dis(A,B) = (Ax-Bx)+(Ay-By) = (Ax+Ay)-(Bx 阅读全文
摘要:
cdq(陈丹琦)分治,是一种类似二分的算法。基本思想同分治: 它可以顶替复杂的高级数据结构,但必须离线操作。 N维偏序,就是求N个关键字下的顺/逆序对。cdq分治是这类题中常用的降维手段。 一维偏序 学习归并排序时,我们了解到它的一个特性就是可以用来求逆序对。 Luogu P1908 逆序对 voi 阅读全文
摘要:
190227模拟 题目描述 给定一张 N 个点的有向图,点 i 到点 j 有一条长度为 i/gcd(i,j) 的边. 有个 Q 询问,每个询问包含两个数 x, y,求从点 x 出发到点 y 的最短距离。 给定一张 N 个点的有向图,点 i 到点 j 有一条长度为 i/gcd(i,j) 的边. 有个 阅读全文
摘要:
这个人讲的特别好:「分块」数列分块入门1 – 9 by hzwer 分块是一种暴力数据结构,可以处理区间操作等问题。 分块,就是分很多块来进行处理,这样查询时可以直接调用整块信息+暴力查询左右两端信息,将线性的枚举优化。 要分块,首先要确定块的大小。 一般来说,块的大小都为√n。这样可以保证整个序列 阅读全文
摘要:
关于dp问题的一些汇总( ´▽`) 一、线型dp 就是普通的dp啊.. 像最大上升子序列,最长公共子序列(LCS)都用到了这种思想w 二、背包型dp 具体参考背包九讲吧qwq 常用的大概就01背包,完全背包,多重背包,有依赖的背包( Luogu P1064 金明的预算方案)... 01背包和完全背包 阅读全文
摘要:
qwq 这题是知道了正解做法才写的.. 求每两点间最小权值最大的路径,本来我以为要每个点都跑一遍dij(?),后来意识到生成树好像是用来找这个的( ´▽`) 然后我问dtxdalao对不对,他说“我记得这道题好像要用倍增”(我:???剧透会被关进小黑屋的) 其实就是最大生成树是随便建的,然后对于每两 阅读全文
摘要:
qwq 预处理出从$x$节点向上跳2i个节点的序号$p[x][i]$及节点深度$dpth[x]$, 寻找$lca$时,从$Max$(可能的最大深度)到0枚举$i$, 首先把较深的一个节点向上跳至深度相同, 然后两个点同步动作,若$p[x][i]≠p[y][i]$则跳。 最终返回他们的父亲$p[x][ 阅读全文
摘要:
((^ 0.0 ^) )~ 堆是一个完全二叉树,对于小根堆,所有父节点<=子节点,下标就和线段树是一样的 在STL里就是优先队列 只有堆顶元素可以操作(询问或弹出)。 加入新元素时x,heap[++size] = x,下标t=size; 每次比较它和父节点(t/2)的大小,如果它较小就swap。 删 阅读全文