- 博客(6)
- 收藏
- 关注
原创 CSP-J 2024 复赛题解
我选择了 map 做法:每个输入查找 map 中之前是否记录过此元素,如果记录过则证明已经拥有这张牌,反之则记录并将统计数增加。数据仅有 52,极小的数据范围导致这题只有一个问题:如何简短方便的去重并统计。,然后在不增加位数的情况下改变某些数字(前三位)使得总木棍数正好为。根据上述讨论,我们发现解决的核心即为最小化数字位数,全部填入。)都被我算出来并特判,具体见代码。由于我使用的全为更改前三位。纯模拟,细节把握好即可。0. 不替换,前三位。所以答案为两位数的(
2024-10-27 15:07:54
1154
1
原创 树上倍增下的 LCA 问题
中深度较大的开始,先使深度较大的缩短到最接近另一个深度的节点(自己 / 最近的祖先),然后一直向上即可。给定一颗有根树,若节点 k 既是节点 x 的祖先,又是节点 y 的祖先,则称 k 是。要解决这个问题,我们还要求出每个节点的深度,可以使用 dfs 解决。的所有公共祖先中,深度最大的称为最近公共祖先,记作。步到达的祖先节点,若此节点不存在则设。因为讲解倍增,所以这里使用。在处理 LCA 时,我们以。LCA,最近公共祖先问题。的第一个中途交汇点。注:本代码用于 AC。
2024-09-14 18:15:47
2063
原创 倍增和 RMQ 问题的 ST 表解法
倍增,从字面及数学的角度就是 ”成倍增长“ 的意思。这能使线性问题转化为数级处理,优化时间复杂度。不是人话是不是?听不懂是不是?看这里。这是指我们在进行递推时,如果状态空间很大,通常的线性递推无法满足时间与空间复杂度的要求,那么我们可以通过成倍增长的方式,只递推状态空间中在222的整数次幂位置上的值作为代表。因为基本定理:任意整数可以表示成若干个2的次幂项的和 这一性质,使用之前求出的代表值拼成所需的值。”倍增“ 与 ”二进制划分“ 两个思想相互结合,降低了求解很多问题的时间与空间复杂度。
2024-09-14 09:59:03
441
原创 Floyd 算法
核心代码只有三层循环,一行更新,十分简洁,可是这四行代码为什么就能求出任意两点的最短路径呢?f_{k - 1, i, k} + f_{k - 1, k, j} & 经过 k 节点 \。注:每次全排列后,通过最短路到达目前执行边起点,在起点加上本边边权。最短路径的子路径仍然是最短路径,这个定理显而易见,比如一条。但是,既然是动态规划,那么我们就要为问题做一个全新的定义。既然要经过所有边,我们就转化为要经过所有指定边的点。的最短路,反过来,如果说一条最短路必须要经过点。
2024-09-09 18:28:37
3653
1
原创 DP 详解
DP 问题在 OIer 中很受欢迎,因为每个 DP 问题在某种意义上都是原创的,你必须努力思考其状态和状态转移方程才能为其发明解决方案。由于动态规划如此受欢迎,它可能是算法竞赛中最重要的掌握方法。DP(Dynamic programming,全称动态规划),是一种基于分治,将原问题分解为简单子问题求解复杂问题的方法。动态规划的耗时往往远少于朴素(爆搜)解法。很简单的名字,即为使用空间的代价来确保不会超时。分类讨论就是分类 --> 讨论!
2024-09-09 18:27:36
5739
1
原创 Hexo + redefine主题配置个人博客
我们使用 redefine 主题,这个主题的自定义,方便程度都是很好的,作者也预留了许多插件接口。在 “_config.yml” 文件中把 deploy 上面的 “theme” 改成主题名就好了。然后去:C盘 --> User --> <你的用户> --> “.ssh” 文件夹找到这个文件。输入 “hexo s” 会弹出一个网址,按 “Ctrl + C” 输入新命令。在 “blog” 文件夹中右键选择 “Git Bash Here”。点击右上角 “+” 号,选择 “New repository”。
2024-08-31 11:36:33
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人