- 博客(15)
- 收藏
- 关注
原创 离散化学习
当数据范围在10^6以内时,我们通常开一个数组就能直接映射,如:让值为i存到a[i]位置当数据范围很大时,如1~10^9、1~10^18次方,但是数据量很少,如10^5个数,此时我们就不能直接映射。以数据范围10^18,数据量10^5为例。一是内存不够,不可能开一个a[10^18]的数组。二是就算能开,遍历一遍时间复杂度也是10^18。此时我们就需要一个辅助数组,把所有数字紧挨着放到一个数组中,就能压缩到10^5,就能支持后续操作。
2024-07-01 11:47:49
954
原创 springboot中thymeleaf与jsp的使用
在之前的实训学习的javaweb项目,前端主要使用的是jsp,今年实训使用springboot时,发现不支持jsp格式,但是我们可以通过添加依赖项和配置实现。Spring Boot 推荐使用 FreeMarker、Groovy、
2024-06-20 23:23:58
833
1
原创 线段树学习
线段树是一种能把一些对于区间(或者线段)的修改、维护,从O(n)的时间复杂度变为O(logn)的工具。线段树是一个完全二叉树,我们可以用堆来存,可以用一维数组来存。对于一个长度为8的线段,可以这样表示每一个线段[L, R],代表区间[L, R]的和,如[1,4]就代表1~4的和如果用一维数组来存,下标(蓝色)如下:由此我们可以知道,对于下标为x的线段,有以下性质以数组a为例:父节点:a[x/2] 或者 a[x >> 1]左儿子:a[2 * x] 或者 a[x
2024-04-23 22:04:09
489
原创 区间dp问题
k的左边合成一堆就是f[l][k],合并的费用就是s[k]-s[l-1]k的右边合成一堆是f[k+1][r],合并的费用就是s[r]-s[k]总费用就是。
2023-09-19 18:11:35
69
原创 双指针算法
给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式:第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式:共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围:1≤n≤100000输入样例:51 2 2 3 5输出样例:3。
2023-09-12 10:35:05
36
原创 前缀和与差分
当我们需要频繁求区间的所有元素和的时候,如果每次都遍历一遍,时间复杂度会非常糟糕但如果我们用一个数组s,记录下从每个位置的前i项和,这时我们就可以用的时间求出的和,即。
2023-09-03 17:51:30
24
原创 高精度——加减乘除
高精度加法一般都是由于所需要加的数字位数过大,如1e6位,想要实现,我们需要开数组来存储每一位,然后依次对每一位相加,同时进行进位,具体看代码展示逆序输入是为了方便进位。
2023-09-03 16:37:10
23
原创 排序与二分
通过分治法,假设有n个数需要从小到大排序,l,r分别为当前序列的左右边界点,我们每次取中间位置(l+r)/2的值x做为依据,将序列分为2部分,左边的=x,然后分别对左右2个序列进行排序,以次类推,一直递归下去。时间复杂度为O(nlogn),最坏情况为n^2当然,也可以直接使用sort排序。实现过程1、每次确定分界点,q[l],q[r],q[(l+r)/2]
2023-09-03 09:20:24
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人