自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 08.20CSP模拟赛总结

先对序列排序,再把序列存到双端队列中,针对每次操作,计算是 pop_back 贡献大还是push_back 贡献大。解析:通过平衡树维护序列状态并进行计算。或许该用线段树,又或许该用ST表…

2025-08-21 21:52:10 94

原创 08.19总结

在图论问题中,我们可以将强连通分量(SCC)缩成一个节点,从而将原图转化为有向无环图(DAG)。当转换为无向边时,这些路径保证了任意两点之间至少存在两条不同的路径连接,这正是边双连通分量 (BCC) 的定义特征。将强连通分量中的有向边替换为无向边后,就形成了边双连通分量。需要注意的是,前向边和横叉边仅存在于有向图的DFS生成树中,而无向图只有树边和返祖边。在有向图中,若将所有有向边视为无向边后得到的图是连通的,则称该图为弱连通图。在无向图中,若任意两点间均存在路径相连,则该图称为连通图。

2025-08-19 22:48:07 484

原创 08.18总结

需要注意的是,这里的"极大"强调的是无法再扩展的局部最大性,而非全局意义上的 “最大”。它用时间戳(dfn)标记节点在 dfs 遍历中的访问顺序,回溯值(low)是在不经过(搜索树中)父节点的情况下能到达的最小的节点 dfs 序。割点是图论中的关键概念,其定义为:在无向连通图中,若删除某顶点及其邻接边会导致图分裂为多个连通分量,则该顶点称为割点。割点揭示了图的连通性对特定顶点的依赖关系,移除这些关键顶点将破坏图的整体连通性。割边(又称桥)与割点的定义相似:删除一条割边后,图中的连通分量会增加。

2025-08-18 22:16:57 1025

原创 08.04总结

update:之前文章出现错误,已修改。

2025-08-17 15:31:31 602

原创 08.13CSP模拟赛总结

敌人必然按照血量由低到高的顺序被消灭。将敌人按血量升序排列后,第 𝑖 个敌人承受的伤害值为。名的评分方法数(排序方法:分数较大在先,若分数相等则编号较小在先)。使用函数 next_permutation()。时间复杂度虽然接近 1 秒,但是开。时,该敌人才会被消灭。稍作优化即可得到最终解法。注意需要使用数组标记并去重。个评委的评分序列相同,且每个评委的每个。的 祖先,输出 0,否则输出 0.5。解析:采用暴力枚举方法。的 祖先,输出 1,如。给定一棵二叉树,再让。,问 树的先序遍历中,

2025-08-17 13:37:14 560

原创 08.15总结

一个数末尾零的个数由其质因数分解中 10 的个数决定,而 10 的个数又取决于其中 2 和 5 这对因子的数量(因为10 = 2 × 5)。因此,末尾零的个数等于该数因子 2 和 5 的个数中的较小值。,对答案的贡献都一样,都是 1,所以,我们可以对所有的 0 进行 mex 操作,否则进行求和即可。实际操作中,应优先选择方法 2 或 3,因为乘数较小可以让数值增长更缓慢,从而获得更多操作机会。,此后不管选定何区间,mex 该区间都小于 sum 该区间,而。,可直接到达,步数为 1;++,否则不作操作。

2025-08-16 17:09:52 512

原创 08.14总结

一种简单易实现的最小生成树核心算法。其实现思路类似于Dijkstra算法:任选一个起始点、维护当前生成子树、每次选择距离当前子树最近的未连接节点加入、每加入新节点后,更新其邻接点到子树的最短距离。这是一种简单高效的经典最小生成树算法。其核心思想是:首先将所有边按权值排序,然后从小到大依次将边加入生成树。为了避免形成环,在每次添加边时,需要使用并查集检查该边连接的两个顶点是否已经连通。条边,使得这些边与所有顶点恰好构成一棵树,这样的树称为该图的生成树。其中,所有生成树中边权总和最小的那棵,即为最小生成树。

2025-08-15 10:04:37 369

原创 08.12总结

这样在新图上用 dijkstra 求得的最短路,经过转换就能得到原图的最短路径,这正是 Johnson 算法的核心思想。Floyd 算法是一种高效的全源最短路径算法,能够在任意图上正确运行。算法采用二维数组存储任意两点间的最短距离,在每轮松弛操作中仅选取一个中间节点作为中继,并利用该节点更新所有其他点对的最短路径。不过,我们也可以采用另一种更高效的方式:基于原有的 dis 数组进行更新,这种方法的时间复杂度为。,在稀疏图上的表现优于 Floyd 算法,其本质是一种基于势能函数的建图方法。

2025-08-12 21:25:03 689

原创 08.11总结

本文会介绍两种最短路算法:dijkstra 和 bellman 及对应实现。

2025-08-12 11:21:28 353

原创 08.08总结

删路径,肯定是删的越长越好,最好从叶节点删到叶节点。所以只要输出 floor(叶节点的个数 / 1.0 / 2) 即可。进行升序排序(使用 sort 函数,自定义 compare),最后输出结果即可。只需反复对数组中的最小值和次小值进行合并整除操作,直至数组仅剩单一元素即可输出。2,是 1 输出 YES,否则输出 NO。的最大值,则输出 1,否则输出 0。我只知道用前缀和求出修改的数组总和并。合并为一组,使用结构体,然后对。就会一直删除,直到人数小于。

2025-08-08 22:37:55 228

原创 08.07总结

在C++中,树是一种重要的非线性数据结构,由节点(Node)和边构成,用于描述具有层次关系的数据集合。树是由有限个节点组成的集合,当节点数为0时称为空树;否则它包含唯一一个根节点,其余节点划分为若干互不相交的子树集合,且每个子树本身也是一棵树(单个节点也视为树)。使最大子树节点数最小的根节点即为树的重心。选定一个合适的根节点,使其子树的分布尽可能均匀,即各子树的节点数量接近平衡。这个根节点就是树的重心。6.树的重心到任意节点的距离不超过树直径的一半。的路径就是树的其中一条直径。2.树的重心位于树的直径上。

2025-08-07 22:32:44 217

原创 08.06CSP模拟赛总结

种有效数据,前缀和即可。

2025-08-06 21:26:51 237

原创 08.05总结

而分块采用类似暴力的枚举方式,其核心改进在于:预先将序列划分为若干固定大小的"块"。当枚举过程中遇到完整块时,可直接调用预处理好的块信息,从而显著提升枚举效率。分块是一种通用且直观的数据结构,能有效解决许多树状数组和线段树难以处理的动态问题,但其时间复杂度相对较高。莫队算法是一种优雅的离线区间查询算法,本质上属于一种优化的暴力解法。分块本质上是一种优化后的暴力算法。假设序列长度为n,块大小为B,进行q次查询,则分块的时间复杂度为。经数学优化可知,当B取√n时复杂度达到最优,此时整体复杂度为。

2025-08-05 21:55:25 550

原创 08.01总结

将第一个出现的出现次数最少的字母变为出现次数最多的字母即可。只要输出一个中间大两边小的数组就行了。的元音字符串,同时最小化最多字母的出现次数。先计算 0 和 1 的个数,0 的个数记为。先记录去往最左最右坐标要走的步数,再输出。是奇数就加1,是偶数就异或,直到它等于。),输出“YES”,否则输出 “NO”;删去左右两个括号,再检测是否平衡即可。是奇数(这时,异或操作会使。0 / 1 根本不可能出现……次减 2 后能否相等就行了。(哦,对了,记得加空格)。输出 1 ,否则输出。没啥好说的,上核心代码。

2025-08-01 21:27:02 319

原创 07.31总结

构造题是竞赛中的常见题型。这类问题的答案通常具有某种规律性,即使问题规模快速扩大,仍能较为轻松地求解。20)的题目,可以考虑穷举所有可能的构造方案、通过打表观察规律、使用DFS/BFS等搜索算法生成解等。若1仅扩展了最长区间,虽然修改次数增加1,但区间长度也同步增加1,整体效果不会更差。自由度的提高反而增加了思维难度,选手需要从众多可能性中筛选出最符合题目要求的方案。典型案例:某些组合数学问题中,可以先暴力计算小规模样例,再寻找通项公式。若修改后的1能够连接数组中的现有区间,则此操作稳赚不赔;

2025-07-31 20:54:53 380

原创 07.30CSP模拟赛总结

有T组数据:输入 x 和 op ,当 op = 0 时应找到一个 y ,满足 2⩽y⩽n,且 x % n 最小;当 op = 1 时应找到一个 y ,满足 2⩽y⩽n,且 x % n 最大。

2025-07-30 22:25:20 319

原创 07.29总结

投一个六面的骰子,得到的结果有多少种可能?每种情况的概率分别是多少?像这种所有可能出现的基本事件只有有限个,并且每种事件出现的可能性均相同的概率模型,我们将其称为古典概型。古典概型的特点:有限性、等可能性。一个袋子中有5个红球,4个蓝球(颜色、大小均相同),随机取出一个,求取出红球的概率。95\dfrac{9}{5}59​一个标准的六面骰子连续投两次,第一次投出偶数、第二次投出奇数的概率是多少?14\dfrac{1}{4}41​本质上,古典概型就是计数问题,把上文的 “概率” 替换成 “方案数” ,你会发

2025-07-29 22:22:31 504

原创 07.28总结

​。

2025-07-29 21:36:27 797

原创 07.25总结

此题只需要寻找目标整数数位上的最小数,输出即可。单纯模拟,当天能爬山天数++,不能爬山天数变为0,再加上一些步骤。它没说能删几个数,我就删到剩两个,寻找有没有,有就输出,没有就NO。考虑最简单方法,B为一个字符,从到,寻找左右两边有没有B。奇葩题,当K大于2时输出yes(最好的可以罩着最好时也一样),否则如果最好输出yes,否则输出no。每次操作要尽量往前,这样后面的值就都是了。如果: 操作,则答案是;否则,答案是。就是选些点,使得他们的权值和最小。那有人就要问了,嵌套怎么办?

2025-07-26 17:21:27 275

原创 07.24总结

s.size()、s.length() 求长度,它俩相等s.push_back() += “zifu” 在串尾添加新字符(串) 时间复杂度:O(len)(len为添加字符串长度)s = s + '1'和 s = ' ' + s 时间复杂度都是 O(len),所以我们应使用s += '1'(O(1))。s.insert(pos, str) 向串中插入s,插入后str的第一个字符在原串下标pos处输出结果为1390623。

2025-07-24 23:22:06 326

原创 (补)07.22总结

在用高精度存数的时候,一般倒着存数,比如存98374267382554(这段数字是我脸滚键盘弄出来的,无特殊含义)到数组a,a[1]存4,a[2]存5,a[3]存5……一些比较复杂的模拟题,需要注意变量的命名,如果命名过于混乱,不含任何意义,很有可能写到后面就看不懂了。因为X进制"逢X进一"的特点,X进制上的最低位的权重是X^0 = 1,次低位的权重是X^1= Z,以此类推,次k低位的权重是X ^ (k - 1)。就是按照题目的要求,它说咋做你就怎么做,简单的可以大力枚举,难一些的需要优化。

2025-07-24 21:17:16 238

原创 (补)07.21总结

先写一段针对题目数据会超时的暴力枚举,再把你的贪心代码与枚举结果比较,如果结果一样,就可以证明你的贪心算法在小范围内是对的。贪心,就是模拟一个贪心的人,只看近在眼前的局部最优解,一般不考虑后效性。一题为例:如果当前不是最优解,则必然存在一数x,与已选择的最大值y交换,交换后不劣。当一个问题没有后效性且它的最优解能够由其子问题的最优解有效构造,即可使用贪心算法。当然,如果你有强烈的第六感,并且想不出别的办法,也可以试试。再一个一个拿(从小的拿,因为拿的越小就能留出越多空间),思路:先sort从小到大排序,

2025-07-24 13:30:14 293

原创 07.23CSP模拟赛总结

删除掉最高一位的退位(没有退位就不删),之后依次计算即可。如1010 - 202,在十位、千位上有退位, 删除千位的退位,得808+1000=1808。我们用dp[i][0]表示前面对第i 位没有进位的个数,dp[i][1]相反,答案显而易见就是dp[n][0]+dp[n][1]的和。讲解时水灵灵的看着时间复杂度从O(n^4)到O(n^2)再到O(n),之前想出了O(nm)的做法,明知会超时却总是想不出优化,后来听了讲解才知道,输出是。连dp都没想出来,用了个只凭第六感的10分做法。

2025-07-24 11:50:05 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除