- 博客(12)
- 收藏
- 关注
原创 从零开始的异世界算法*4(前缀和与差分)
接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r]之间的每个数加上 c。前缀和与差分的概念和数列的前n项相似,可用于优化时间复杂度,快速计算一个区间的长度。首先是一维数组的前缀和,求出数组l到r区间上的和,n次读入。然后是一维数组的差分,可以应用于在某一段连续区间的修改。再看看差分,先构造一个b数组使得b数组的前缀和为a数组。首先可以通过递推计算的出二维数组前缀和的公式。然后计算x1y1x2y2构成的子矩阵的和。然后是相对复杂的二维数组的前缀和与差分。
2024-03-06 18:24:07 348
原创 从零开始的异世界算法*3(位运算)
原理是此处的-x即为x的补码,如10100的补码为取反x+1即为01100,用&后便可以返回100,1.lowbit函数,返回一个二进制数的最后一位1。基于此函数可以用于统计二进制数中1的个数。
2024-03-06 08:54:53 271
原创 从零开始的异世界算法*2--二分
第二种则是从右向左查到第一次出现的元素,此处对于mid的计算要格外注意,比如说,当l=r-1,此时l+r>>1是向下取整,仍然为r减一,进入死循环,因此改为l+r+1>>1。一.区间[l,r]被分为[l,mid]与[mid+1,r]二.区间被分为[l,mid-1]与[mid,r]首先是比较复杂的整数二分法,分为两种情况。一种是从左向右查找第一个出现的元素。
2024-02-29 15:52:26 315
原创 用数组实现日期运算
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,a年b月c日放置,定时为n天,请你计算它爆炸的准确日期。在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。
2024-01-31 19:36:27 362
原创 关于我入门dfs写的一段代码
很明显,没有了回溯只会输出其中一个答案,先稍安勿躁,让我们来详细看看这段递归是如何进行的,(先默认输入的n为3),首先,1传递到了dfs函数中,此时step为一,不满足递归结束条件,此时book【1】为1,for循环从2开始,使得a[2]=2,再次递归dfs(3),1,2均已经使用,使得a[3]=3,dfs(4),至此,递归结束,打印1 2 3,运行结束。学习中我发现dfs中最难理解的一步就是回溯,所以我先写出了不带有回溯的代码,如下。这段代码是有关与实现从正整数1到n的全排列。输出结果为1 2 3。
2024-01-28 18:58:05 349
原创 寒假写的一些题目...
有三个字符串S1,S2,S,其中S长度不超过300,S1和S2的长度不超过10.想检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即S1的右边界点在S2的左边界点的左侧)。例如,S=abcd123ab888efghij45ef67kl,S1=ab,S2=ef,其中,S1在S中出现了2次,S2也在S中出现了2次,最大跨距为18.一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。剩下一个月寒假再刷刷。
2024-01-24 18:24:54 371 1
原创 指针的定义及其简单应用
不难发现,xy的值并没有得到交换,这是因为,虽然在开始px py pt分别指向了xyt,但在交换时,并没有使用*px,而是px-指针本身的值,是一个地址,这段语句只是将指针变量的值交换了,使得指针px指向了y,指针py指向了x,但xy本身的值并没有交换。若定义一个指针变量px,使px=arr,那么对arr进行加减常数a,则等价于指针的指向动了a个单位。而在二维数组中,则有些不同,首先,我们知道二位数组在内存中的存储依旧是线性的,因此我们可以利用指针对二维数组进行相对简单的输入输出,这一部分与一维数组相似。
2023-11-29 21:39:08 376 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人