- 博客(41)
- 收藏
- 关注
原创 动态规划--提高(从集合的角度出发)
1.状态表示f[i,j]:(1)集合:表示从(1,1)到(i,j)的所有路线(2)属性:max/min/数量2.状态计算:集合的划分划分依据:“最后”划分原则:①不重:求数量时必须要满足,求max和min时可不满足,因为最值重复也没关系,还是最值。②不漏:一定要遵守以acwing 1015摘花生为例属性为max以最后一步f[i,j]为例划分,可划分为从上面来和从左边来。即f[i,j]=f[i-1,j]+w[i,j]和f[i,j]=f[i,j-1]+w[i,j];
2025-04-26 22:15:37
881
原创 acwing--差分&&贪心
再给上面的一阶差分序列进行一次差分,变成原序列的二阶差分(c[i]=b[i]-b[i-1]):1,0,0,0……则可构造区间的一阶差分(b[i]=a[i]-a[i-1]):1,1,1,1。如此一来,可以将原来区间一段的变化变为这个区间开头数字的变化。所以可拓展为将y=x^k变为y=0要进行k+1阶差分。我们可以看出原序列符合y=x的线性递增关系…而二阶差分序列则只有一个值的变化其余y=0。给一段区间上加上:1,2,3,4。而其一阶差分序列符合y=c的关系。
2025-03-05 17:53:39
196
原创 数论--裴蜀定理
对于整数a和b,一定有正整数x,y使得ax+by=__gcd(a,b);可理解为将数组中所有数的最大公因数,如果能b整除则说明则说明必有解。
2025-03-01 17:13:09
188
原创 排列组合模板---A(n,m)和C(n,m)
在排列组合中A与C代表不同的概念代表的是“排列”(Arrangement 或者 Permutation),指的是从n个不同元素中取出m(1≤m≤n)个元素,按照一定的顺序排成一列,这种安排的方式称为排列。其计算公式为代表的是“组合”(Combination),指的是从n个不同元素中取出m(1≤m≤n)个元素,不考虑顺序合成一组的方法数。组合的计算公式为,这里的选择不关心顺序,因此数目会少于排列的情况。简单来说,当问题涉及到顺序时使用排列(A),而当问题不涉及顺序时则使用组合(C)。
2025-02-07 16:53:03
1143
原创 日期问题--模板
例题:acwing-466. 回文日期。例题:acwing-3607.打印日期。四、给定年月日,求n天后的日期。二、判断某年某月的天数。一、判断日期是否合法。
2025-01-23 17:10:12
234
原创 C++---(标准模板库)STL
/typename:变量类型//注:如果typename为STL容器需在>>处加上空格假设typename为int//两维都可变长//第一维固定。第二维可变长队列优先队列大根堆小根堆。
2025-01-09 21:54:20
901
原创 acwing--dp--1--背包问题
n个物品,v为背包体积,Vi为各物品体积,Wi为各物品价值。每个物品只能用一次。二进制优化,a,b,s 分别表示物品的体积,价值和个数。dp的优化是对状态方程进行转化变形。
2024-12-16 17:30:35
327
原创 acwing--dp--2--线性dp和区间dp
做法一:自上而下。注意:初始化要到i+1,因为状态计算的是左上和右上分别加上当前值的最大值。做法二:自下而上好处:不用最后遍历取最大值,因为最上面就一个。
2024-12-16 17:27:56
306
原创 数论--欧拉函数
1.原理:欧拉函数可以通过质因数分解来计算。如果n可以质因数分解为p1^α1 * p2^α2 * ... * pk^αk,则φ(n) = n * (p1-1)/p1 * (p2-1)/p2 * ... * (pk-1)/pk。这个公式可以通过容斥原理来证明。2.作用:求小于n的和n互质的数字的个数。
2024-12-15 09:07:36
201
原创 数据结构--线性表的顺序存储和链式存储
示例: 二、链式存储--不要求存储空间连续,链表存储 三、数组和链表各操作复杂度对比操作/类别 数组 链表 访问 O(1) O(n) 插入(中间) O(n)(插入位置以后元素要整体后移) O(1) 末尾添加(有足够空间) O(1) O(1)(有尾指针)O(n)(无尾指针,如无需要遍历链表找到尾节点插入)
2024-10-19 16:27:03
215
1
原创 最大子列和
在线处理:每输入一个数据就进行即时处理,在任何一个地方中止输入,都能正确给出当前值。题目:给定N个整数的序列{A1,A2,……An},求函数f(i,j)=max{0,复杂度:T(n)=O(n)。
2024-10-13 12:23:21
185
原创 图的邻接矩阵存储法和邻接表存储
图一的二维数组中,第i行第j列表示的是点i到点j是否有边。1表示有边,∞表示没有边。0表示(i=j)时自己到自己。图一为二维数组,图二为要存储的图。以两图为例:(《啊哈!
2024-10-10 21:04:27
266
原创 数据结构--链表与双向链表
双链表(双向链表):每个节点有一前一后两个指针。)单链表:邻接表(用最多) 存储图和树。链表是一种非连续存储的线性存储结构。链表的每一个节点都由数据和指针组成。时间复杂度为O(1)原理同上图。4.将下标是k的后面点删掉。二、链表的分类与基本操作。3.将x插到下标为k的节点。5.翻转 reverse。2.插入下标为k的节点后。
2024-09-23 14:14:26
428
原创 Sort函数
作用:对两个迭代器(或指针)指定的部分进行快速排序。可以在第三个参数传入定义大小比较的函数,或者重载“小于号”运算符。bool cmp(int a,int b)//重载运算符。return a>b;//a>b则放在前面。2️⃣//从大到小排序。
2024-09-08 16:05:33
191
原创 算法基础---最短路问题(实现)
3、稀疏图和稠密图区分:稠密图:n^2~m,稀疏图:n~m。循环后所有边一定满足dist[b]>=dist[a]+w //三角不等式。{ t←不在S中的距离min的点 n^2次。2、多源最短路:多个起点到其它所有点的最短路。注: 1、单源最短路:一个起点到其它所有点的最短路。(看dist[x]>dist[t]+w(权重))(看dist[x]>dist[t]+w(权重))dist[x]:当前1~x最短路间距离。
2024-09-07 15:44:22
988
原创 算法基础---离散化
当一组数据值域太大(例:0~10^9),而数据数量很小(例:10^5)时,值域中的数不是全都用得上的。所以需要用离散化将该组数据。例:a[]={1,3,3,100,50000};,来用数组表示这组数据,有效。
2024-09-03 19:15:33
438
原创 算法基础---位运算
0001k=0001,k=2,k是右移的位数,这里k = 2.(一)n的二进制表示中第k位(自右向左)是几?(二)、lowbit(x):返回x最后一位1及后面所有零。返回:x&-x 或 x&(~x+1)任何数据在计算机中都是以。进行操作,所以效率很高。总:1+2:n>>k&1。存储,位运算是指直接对。例:求二进制中1的个数。
2024-09-03 18:00:39
363
原创 算法基础---双指针
朴素算法在第二层遍历时,会重新开始j恢复到初始位置。但双指针则不会恢复到初始位置,在满足位置的地方继续走下去。以此减少算法的复杂度。输入一个字符每个子串之间有一个空格,让你输出每一个空格后的子串。1.快慢指针指向两段不同的内存,两指针同向移动扫描。2.对撞指针指向同一段内存,两指针反方向移动扫描。输入 abc def hij。例2:最长连续不重复子列。
2024-09-02 20:08:06
321
原创 算法基础---拓扑序列
∵一定存在一个入度为0的点。一、理解:有向无环图(亦称拓扑图)必有拓扑序列。出度:多少条边从该点指出。入度:多少条边指向该点。
2024-09-02 19:36:30
205
原创 算法基础---深搜(DFS)与广搜(BFS)
1、思路:先找一条路走到头无路可走记录方案并回退一格继续向下搜以此递归。2、注意:1、为减少算法复杂度需要记录之前遍历的结果,后直接调用即可。2、递归之后需要恢复现场。一层一层搜,当每一次搜索的权重相同时可以求”二、深度优先搜索(DFS)三、广度优先搜索(BFS)
2024-09-01 17:02:34
816
原创 基础算法---差分(前缀和逆运算)
接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。因为a数组为b数组的前缀和,∴b[i]+c 可使a[i]及以后每个a都变为a[i]+c。利用性质我们可以求【l,r】的a+c序列。(先b[l]+=c,再b[r+1]-=c)也就是说差分可以相当于数列中的an,前缀和可以看为Sn。接下来m行,每行包含三个整数l,r,c,表示一个操作。an的前缀和,b1……共一行,包含n个整数,表示最终序列。第二行包含n个整数,表示整数序列。使ai=b1+b2+……
2024-09-01 09:56:39
303
原创 vector<int>& arr
在这个示例中, func1 中对 arr 的操作是在复制的对象上进行的,而 func2 中则是直接对传入的原始 myVector 进行操作。,从而提高程序的性能。当传递一个非常大的容器(如 vector )时,如果不使用引用而是按值传递,会导致整个容器被复制,这可能会带来较大的性能开销。在 vector<int>& arr 中使用 & 是为了传递引用。传递引用的主要目的是。
2024-08-31 09:30:43
362
原创 基础算法---前缀和
2.求区间和:【l,r】Sr-Sl-1=al+……ar 算法复杂度为o(1),需先预处理……其前缀和为si = a1+a2+∴求和:Sx2y2-Sx2,y1-1-Sx1-1,y2+Sx1-1,y1-1。类似于高中的数列sn为a的前n项和……因为x1,x2,y1等均为整数所以应以虚线位置计算面积。一、思想:有一数组a1,a2。
2024-08-30 21:28:45
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人