- 博客(26)
- 收藏
- 关注
原创 树链 剖分
重链剖分是将一棵树剖分成若干条重链的一种算法。例如在右图中,1的重儿子为2,5的重儿子为9,其中1,3,4,7,8,11,12都是链顶,1->2->5->9->10->13是一条重链,8自身构成一条重链。
2025-04-11 09:14:49
573
原创 初等 数论
裴蜀定理:设a,b是不全为0的整数,则存在整数x,y使得ax+by=gcd(a,b)扩展裴蜀定理:a,b为不小于0的整数,n为整数,是否存在不小于0的x和y使得ax+by=n有解?若n>ab-a-b,有解若n=0,有解(x=y=0)若n<0,无解(a,b,x,y均不小于0,无法线性变换出负数)若ax+by=n有解,则ax+by=ab-a-b-n无解。
2025-04-10 09:08:36
862
原创 基础 算法
因此,如果我们删除 2𝑚 个最小宝石和 (𝑘−𝑚) 个最大宝石,则剩余的元素组成的段在排序后的数组中从位置 (2𝑚+1) 到位置 (𝑛−(𝑘−𝑚)),可以从左到右遍历 m,使用前缀和在 O(1) 时间内计算其总和。初始时,l=1,r=n。根据简单的容斥原理可知,设 ai+aj≤R 的下标对数量为 y,ai+aj≤L−1 的下标对数量为 x,则 ai+aj∈[L,R]的下标对数量为 y−x。时间复杂度:排序的复杂度为 O(nlogn),双指针的复杂度为 O(n),即整体的复杂度为 O(nlog
2025-04-10 08:18:08
855
原创 分块与莫队
分块的基本思想是通过适当的划分,预处理一部分信息并保存下来,用空间换取时间,达到时空平衡。事实上,分块更接近于“朴素”,效率往往比不上树状数组和线段树,但是它更加通用、容易实现。对于一个数组,我们设置一个块大小sz(当 sz=sqrt{n} 时可以达到较好的时间复杂度),然后将每个元素划分给一个块(令第 ( i ) 个元素属于第⌊szi⌋块),并用 bel[i]记录下 i所属的块,用 L[blo], R[blo] 表示块的左右端点。
2025-04-06 19:47:29
744
原创 蓝桥杯13
对于一个长度为N的整数数列A1A2⋯AN,小蓝想知道下标l到r的部分和il∑rAiAlAl1⋯Ar是多少?然而,小蓝并不知道数列中每个数的值是多少,他只知道它的M个部分和的值。其中第i个部分和是下标li到ri的部分和∑jliriAliAli1⋯Ari, 值是Si。
2025-04-06 19:47:06
982
原创 基础树理论
prefixiprefixi表示结点i到根的这条链上所有结点的权值之和。这个需要通过树形dp计算,prefixxprefixfaxaxprefixxprefixfax]]ax。faxfax表示x的父节点,1的父节点为0。路径(u, v)的结点权值之和prefixuprefixv−prefixlca−prefixfalcaprefixuprefixv−prefixlca−prefixfalca]]。diffi。
2025-04-06 19:46:12
623
原创 字符串算法
01Trie树是一种二叉树,每个叶子结点对应一个二进制数,通过根出发到该结点的路径来表示,深度小的表示二进制高位。01Trie通常用于解决最大异或对问题,即求解 (a[i] \oplus a[j]) 的最大值的问题。
2025-04-06 19:44:45
746
原创 树形 dp
最后,遍历所有节点,取树的代价的最大值作为答案。的做法,但是这里有个最简单的做法,基于以下结论:找到树的一条直径的两个端点为。我们可以通过从底向上遍历树,维护两个最大的到叶子节点的距离,来重新计算。为根节点时的树的代价。,这是我们在学习用两次 DFS 求树的直径的贪心结论。,相邻整数之间使用一个空格分隔,分别表示每个结点的点权。,那么对于树上的任意点,距离其最远的点一定是或者。首先,我们需要计算每个节点的深度,对于一个节点。的子树中到叶子节点距离的前两大值。请输出找到的这些点的点权和的最大值。
2025-04-04 16:33:49
1029
原创 蓝桥杯12
给定序列a1a2⋯an12⋯n,即aii。小蓝将对这个序列进行m次操作,每次可能是将a1a2⋯aqi降序排列,或者将aqiaqi1⋯an升序排列。请求出操作完成后的序列。
2025-04-01 16:28:01
595
原创 蓝桥杯09
三体人将对地球发起攻击。为了抵御攻击,地球人派出了A×B×C艘战舰,在太空中排成一个A层B行C列的立方体。其中,第i层第j行第k列的战舰(记为战舰ijk)的生命值为dijk。三体人将会对地球发起m轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第t轮攻击用7个参数latratlbtrbtlctrctht描述;所有满足i∈lat。
2025-04-01 16:19:13
782
原创 蓝桥杯06
赌圣 atm 晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!1的对面是42的对面是53的对面是6。假设有m组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。atm 想计算一下有多少种不同的可能的垒骰子方式。两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。由于方案数可能过多,请输出模1097的结果。
2025-04-01 15:48:31
919
原创 蓝桥杯11
对于一个字符串S, 我们定义S的分值fS为S中恰好出现一次的字符个数。例如f′′aba′′1f′′abc′′3f′′aaaa′′0。现在给定一个字符串S0..n−1(长度为n),请你计算对于所有S的非空 子串Si..j0≤i≤jnfSi..j])的和是多少。
2025-03-30 17:16:31
893
原创 蓝桥杯14
给定一棵树,结点由1至n编号,其中结点1是树根。树的每个点有一个颜色Ci。如果一棵树中存在的每种颜色的结点个数都相同,则我们称它是一棵颜色平衡树。求出这棵树中有多少个子树是颜色平衡树。
2025-03-30 17:15:12
875
原创 蓝桥杯15
在一次探险中,勇者小蓝发现了n颗闪烁着奇异光芒的宝石,每颗宝石都蕴含着魔法能量,分别记作a1a2⋯an。小蓝计划用n个特制的魔法盒子来封印这些宝石,防止其魔法能量被滥用。封印宝石会消耗小蓝的体力,具体地,将第i颗宝石放入第j个盒子会消耗小蓝i−j点体力(注:需满足j≤i才能将第i颗宝石放入第j个盒子进行有效的封印)。小蓝也可以选择将魔法盒留空,以保存体力供后续使用。
2025-03-30 17:13:53
1067
原创 基础图论以及算法
对于一个图,我们先建立一个"Super Source Node"(超级源点),我们用0号节点表示,并且将其与所有点连接起来,边权为0。接下来用Bellman-Ford算法计算出超级源点的单源最短路,这个是很简单的。好,假如不存在负环,现在我们就得到了一个h[]数组对吧,接下来我们令每条边的权重 $ w(u,v) = w(u,v) + h[u] - h[v] $。这样一定可以使得所有边权都为正权,假如 w(u,v) < 0,那么必然有huwuv≥hvhuwuv≥hv。
2024-12-05 15:57:46
636
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅