自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 练习题(动态规划)

假设,我们想求一下当前这个数 ai,以ai结尾的最长子序列,那我们要从序列里找到一个最大的小于ai的序列,假设长度为4的上升子序列的最小结尾值是q4,q4是最大的小于等于ai的数,那把ai接过去,那这样我们就得到了一个以ai结尾的长度为5的上升子序列,假设长度为5的上升子序列的最小结尾是q5,由于q4是最大的小于等于ai的,那么q5就是大于等于ai的,所以ai一定不可能接到长度是5的子序列后面,因此,以ai结尾的上升子序列的最大长度就是5,那如何找到最大的小于等于ai的数呢?一,最长上升子序列2。

2024-10-22 21:54:33 811 1

原创 动态规划2

注意方程的变换,应该找数字下面的两个数字坐标,再加上本身a[i][j]如果还是嫌麻烦,我们可以倒序dp,这样边界问题一点都不用考虑了。如果想要知道最长子序列是什么的话,可以记录当前点是从哪个点来的。当然,初始也不用思考边界问题,直接把所有都初始化。这里输出的序列是倒着输出的,正着输出的话可以用栈。代码很简单,直接用状态转移公式。是指递推方程有明显的线性关系。

2024-10-21 20:57:22 207

原创 动态规划1

正序的情况下,假设循环到第二轮,i = 2,j循环到4了,那么f[4] = max(f[4], f[4 - 2] + w[2]),这里用到了f[2]对应二维应该是f[1][2],但是一维下却成了f[2][2]也就是f[i][j - v[i]] 很显然跟公式不对,因为f[2]在之前j循环到2的时候被更新了一轮,从第i - 1 轮更新到第i轮了,也就是被污染了。但是逆序的话当我们j枚举到4的时候,这里用的 f[2]是还没有被更新的第i - 1轮的 f[2] 正好对应二维的 f[i - 1][j - v[i]]

2024-10-16 23:05:37 599

原创 数学知识4

1.容斥原理2.简单博弈论。

2024-10-13 13:10:49 355

原创 数学知识3

所有输入系数以及常数均保留两位小数,绝对值均不超过 100100。因为 a > b, b含有的素数a都包括。要根据数据范围选择不同的方法。为何代码里筛素数只筛了a?

2024-10-09 22:58:06 206

原创 数学知识2

第一种情况时,pj是i的最小质因子,pj小于i的所有质因子,所以pj同时也是i * pj的最小质因子,就有了上面的式子,而 i * (1 - 1/pj) ... (1 - 1/pk)正好是i的欧拉函数,所以简化成phi[i] * pj。第二种情况时,pj 不是i的质因子,又因为 pj * i 的质因子有 pj 和 i 的所有质因子,所以就是第二个式子,而同理把 i * (1 - 1/p1) ... (1 - 1/pk) 简化成phi[i]p是质数,p是质数,p是质数,不是质数就不行了,费马定理就不能用了。

2024-09-26 21:49:09 313

原创 数学知识1

1.数论2.组合计数3.高斯消元4.简单博弈论。

2024-09-10 21:42:42 946

原创 搜索与图论3

定义:在一个加权图(即边具有权重或成本的图)中找到一棵包含所有顶点的树,使得这棵树中的所有边的权重之和尽可能小。题目对应一般是无向图,正负边都没关系。

2024-09-07 16:38:44 1016

原创 搜索与图论2

假如这种情况,要求1到5的最短路,发现1根本走不到5,但是4经过松弛操作后会更新5号点,显然0x3f3f3f3f < 0x3f3f3f3f - 999,,所以5号点会更新成0x3f3f3f3f - 999,所以这时候判断dist[n] == 0x3f3f3f3f显然不合适,边长的绝对值不超过100000,减的也不会太大,和0x3f3f3f3f在一个数量级即可。

2024-08-18 16:02:40 859

原创 八数码问题

题目类似于数字华容道,可以抽象一下,把每一个状态当成一个节点a,它的变化后的下一个状态是另一个节点假如是b,我们就连一条a到b的边,权重是1,例如,状态表示:我们可以把二维三乘三的矩阵变成一维的string来存储,用一个字符串来表示一个状态,队列定义的话直接queue<string>q;状态转移,我们先把字符串想象成三乘三的样子,把x的上下左右分别枚举,把这些位置的数移动到x上,最后再把它变成string。在一个 3×3的网格中,1∼8这 8个数字和一个 x 恰好不重不漏地分布在这 3×3的网格中。

2024-05-21 17:43:53 221 1

原创 搜索与图论

1.深度优先搜索 DFS2.宽度优先搜索 BFS3.树与图的存储4.树与图的深度优先遍历5.树与图的宽度优先遍历6.拓扑排序。

2024-05-14 23:02:00 1519 2

原创 常用STL容器的基本用法

系统为某一程序分配空间时,所需时间与空间大小无关,与申请次数有关。

2024-04-24 23:32:29 1287

原创 哈希表算法

作用:把一个复杂的数据结构映射到比较小的区间0到n,比如把0到10^9的数映射到0到10^5内离散化可以看做是一个极其特殊的哈希方式这就会产生冲突,就是某些数映射成同一个数,为了处理冲突有两种方法,拉链法和开放寻址法哈希算法是一个期望算法,在算法题里面一般只会添加一个数和查找一个数,一般不会有删除操作,如果有删除操作,一般不会真的删除某个点,可以开一个bool数组在删除的点上做个标记。

2024-04-23 22:33:50 1640

原创 堆排序(如何手写堆)

同上面,不过不需要考虑是要往上移(k位置上的数变小了)还是往下移(k位置上的数变大了),down和up只会做一个。####3.删除最小值 heap[1] = heap[size];####4.删除任意一个元素 heap[k] = heap[size];是一个完全二叉树,除了最后一层节点之外,上面都是非空的,最后一层从做到右以此排布。用一维数组存储,下标从1开始,1为根节点,x的左儿子为2x,x的右儿子为2x+1。down(x) 把一个节点往下移 up(x)把一个节点往上移。

2024-04-16 22:26:12 503

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除