- 博客(26)
- 收藏
- 关注
原创 基础排序算法
希尔排序是一种基于插入排序的排序算法,通过对数组进行分组并逐渐减小组间距,改善了插入排序的效率。它通过提前移动远距离的元素,使得数据逐步接近有序,从而减少后续排序的交换次数。比插入排序快:希尔排序相对于直接插入排序有显著的性能提升,尤其是对于较大的数组。原地排序:无需额外的内存空间,空间复杂度为O1O(1)O1。适应性强:可以适应各种规模的数组,尤其在数组规模较大时表现较好。
2024-11-14 21:31:53
1077
1
原创 题解:AT_abc147_f [ABC147F] Sum Difference
在一个等差数列中取出若干个元素,求取出的元素与未取出的元素的差值有多少种可能。余数相等的放到一起,求一下区间覆盖即可。是一个定值,所以我们只需求出。个数,那它们的总和必定为。不难看出,最小的肯定是选前。所以,假如我们选取了。所以,我们可以直接把。
2024-08-21 08:33:35
1059
原创 题解:AT_abc113_d [ABC113D] Number of Amidakuji
出发,每次遇到横线时都选择经过它,并且不存在两条端点重合的横线,一条横线的两端点必须在同一高度,一条横线连接的需要是相邻的两条竖线。在此之前,我们需要先求一个东西,我们定义。个位置放边的方案数。个位置不放边的方案数,定义。到达,即一个点上面三个点。从右上的点推出的也同理。
2024-08-21 08:32:49
1090
原创 题解:AT_abc131_f [ABC131F] Must Be Rectangular!
我们很容易看出,导致超时的其实就是合并后将两个点的坐标的可能更新太慢。我们可以将横坐标相同的点的编号合并,再将纵坐标相同的点的编号合并,我们就可以得到联通块了。其次,我们可以再合并的时候比较一下怎样合并次数更少,就用那种方法合并。求出横坐标和纵坐标分别有多少个不重复的坐标,也就是联通块的长度和宽度。图一中黑圆代表原本有的点,图二的红勾代表新增的点。我们不难发现,其实题目就是想让我们找出若干联通块,让每个联通块拼成一个长方形。个点,则可以添加剩下那一个点,求最多可以多放多少个点。于是,我们不难调出如下代码。
2024-08-01 16:17:08
419
原创 [ABC202E] Count Descendants 题解
这道题,我们可以用利用两次搜索,第一次先将统计每一个点的孩子统计出来,并且记录一下当前这个点到根节点经过了多少个点。而第二次搜索呢,我们记录一下每一个点是在第次搜索搜到的和当前这一次遍历所用的点到根节点经过了多少个点。接着,每一次询问,我们只需要遍历一次就行了,而遍历的起点则是这个点是第几个被搜索到的,终点是起点加上它的孩子的数量减去一。分块的基本思想是,通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。的子树中,到根的最短路径刚好经过。
2024-04-14 12:20:09
770
原创 题解:AT_abc017_3 [ABC017C] ハイスコア
所以,我们可以使用差分数组来优化(线段树也可以)。考虑贪心,我们只用留下任意一个宝石即可。个宝石都被探索后,得分将会清零。
2024-04-14 12:15:36
822
原创 AT_abc247_f [ABC247F] Cards 题解
张卡片,每张卡片的正面、反面都有一个数字。张卡片中选择一些,使得牌上的数字包含。的进行合并,其次我们可以用。接下来,我们要推出集合元素为。的方案数量,则答案就是为。考虑使用并查集和动态规划。的方案数量,我们假设用。张卡片的正面的数字为。问有多少种选择的方式。我们可以将正面数字为。
2024-01-29 20:50:18
718
原创 AT_abc287_f [ABC287F] Components 题解
由题意得,我们假如不选,则子节点可选可不选。如果选,则子节点要是选则选的块数是一样的,要是不选就要多加一块。的所有顶点和这些顶点之间的所有边,这些边的两个端点都必须在。不难看出这题是一道树形动态规划,我们可以用。个连通块的诱导子图的数量。个节点的树,顶点标号为。
2024-01-26 20:28:36
657
1
原创 AT_abc287_d [ABC287D] Match or Not 题解
看看是否符合,不符合的话我们就记录一下并且将。部分代表该位置可以被替换成任意的小写字母。这道题我们可以先使用一个字符串。符合了并且原本是不符合的就讲。不符合了并且原本是符合的就讲。,它们仅由小写字母和字符。请你设计程序,对于所有的。我们可以继续用回原本的。位的字符串,接着遍历。不难发现,我们更改的第。
2023-12-09 21:20:27
1136
原创 [JSOI2008] 最大数题解
现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。Q L功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。L不超过当前数列的长度。L02、 插入操作。A n功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。n是整数(可能为负数)并且在长整范围内。注意:初始时数列是空的,没有一个数。
2023-11-26 10:09:06
1086
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人