- 博客(7)
- 收藏
- 关注
原创 第四周刷题
题解:给定一个数组,每个元素的绝对值互不相同,可以对每个元素进行取反操作,目的是让第一个输入的元素达到中位数位置。中位数在本本题里指的是n/2向上取整。,看看能不能做到。废了很长时间去研究官方的题解,终于明白了。首先,每个元素的符号,即正负并不重要,重要的是每个数的绝对值前后,所以先对每个数取绝对值然后从小到大排序。其次,当第一个元素小于等于n/2向下取整再加1这个位置上的数(注意,这里的大小比较都是绝对值的比较),就可以做到,反之就不行。
2025-05-29 21:41:58
861
原创 第三周刷题:CF2108A~CF2104B
我们可以发现,当移动一个元素到最后面,原数组中最后k-1个元素总不会超出最后k个元素的和里,这是因为这些元素最多只能向前移动一位,所以倒数第k个元素有可能被挤出去,但他后面的元素必然存在。所以最后k-1个元素的和是定值,我们要在前k+1个元素里面选取最大元素移动到最后k个元素行列里面,使之和最大。其次,其他情况都有解,但要分一下类,这里的pos原则上可以是任意一个未知元素,代码里因需要提前赋值所有未知元素且检验是否不存在未知元素,所以每当有未知元素就把pos赋值,最后pos就是最后一个未知元素。
2025-05-18 21:21:54
954
原创 第二周刷题(CF2082A~CF2103C)错题总结
要获得最小值,应当先进行所有的上取整操作,再进行所有的下取整操作;要获得最大值则相反证明:因为要获得最小值,所以如果我们先进行所有上取整操作会让原数比单纯除以2大上一些,而后续的所有下取整操作由于有除以二的操作,会高效压缩前面上取整的增量,同时下取整操作本身就会减小,使得减小量最大。获得最大值道理类似,后续所有上取整操作的高校压缩会让前面的下取整减小量高效为0。
2025-05-07 19:38:26
655
原创 搜索与图论
进行n次for循环,备份,然后每一次进行所有边的循环,a b w,表示一条从a走向b的权重为w的边,这里不一定要写成领接表,结构体也可以,存边方式只要能够遍历就可以。2.BFS则把每条路的下面的所有可能都顾及到,用的是队列,用的空间是2的高度次方,是指数级别,好处在于搜到的点是具有最短路性质。堆分为手写堆,有n个元素,和c加加里面的优先队列,有m个元素,因为不支持随时修改,所以想修改的时候就插入一个元素,会存一些冗余,但无伤大雅。图分成有向图和无向图,无向图可以看成一种特殊的有向图,两个方向的有向图。
2025-02-11 01:52:57
942
原创 第二周算法学习
第k个插入的数仅仅指特定的数。ne[j]用来储存从第一个字符到第j个字符的最长的,相等的前后缀的长度,同时它的大小也是我返回后的那个下标。当两个字符不匹配的时候,有可能是因为这个字符的应该在位置,和模板串的当前的字符的位置不同,所以可以利用ne数组后退一部分,保证这个字符的前几个字符匹配同时,再进行匹配。堆的存储:下标是从1开始的,用一维数组来储存,一个父节点的(x)左右儿子的节点编号分别是2x,2x➕1。哈希表的主要作用:将庞大的区域,映射到一个小的空间从0到N,N在10的五次方到10的六次方。
2025-01-26 12:19:28
272
原创 第一周算法学习
差分可以看成假想一个数组,他的前缀和是目标数组,巧妙利用insert函数,即开头加c,结尾的下一个减去c来构建假想数组,insert函数还可以对加c减去c进行实际操作,最后再对假想数组求其本身的前缀和即可。学习内容:快速排序,归并排序,整数二分,浮点数二分,双指针算法,位运算,lowbit运算,整数离散化,区间合并,高精度加减乘除,前缀和,差分。每一位除的时候,前一位的进位乘10加上当前的这一位,结果除以a。lowbit(x),返回x的最后一位1以及后面的数,例如x等于1010,那么答案就是10。
2025-01-20 16:42:37
696
1
空空如也
对于整数格式,怎么理解标记0和指定精度同时出现是忽略标记0?举个例子。
2024-09-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人