- 博客(12)
- 收藏
- 关注
原创 01背包和完全背包
有 N件物品和一个容量为 V的背包,每件物品有各自的价值且只能被选择一次,要求在有限的背包容量下,装入的物品总价值最大。我们先分析一下其状态和要求:要求:价值最大,然后我们再定义一个集合f【i】【j】,其意义为:前 i 个物品 , 容量为 j 时的价值当前背包容量不够即:j小于v【i】,此时的f【i】【j】=f【i-1】【j】,如果够的话,那么我们取max(f【i】【j】,f【i-1】【j-v【i】】+w【i】),最后输出题目要求的f【N】【V】优化:可以把二维优化为一维。
2024-03-31 16:24:37
346
1
原创 SPFA的简单应用
Bellman_ford算法会遍历所有的边,但是有很多的边遍历了其实没有什么意义,我们只用遍历那些到源点距离变小的点所连接的边即可,只有当一个点的前驱结点更新了,该节点才会得到更新;因此考虑到这一点,我们将创建一个队列每一次加入距离被更新的结点。而SPFA便是其的优化。
2024-03-24 20:48:42
445
1
原创 线段树的简单应用
线段树是算法竞赛中常用的用来维护的数据结构。线段树可以在O(Log N )的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。
2024-03-17 16:29:25
475
1
原创 LIS类问题思路
我们先从第一个元素开始,此时LIS为1,那么我们进行加入下一个元素的操作,此时我们会考虑2种情况,第一:该元素大于等于2,那么此时的LIS为2. 第二:如果该元素小于3,那么LIS依然为1,不过元素是2个,那再加上下一个,看能不能找出一点猫腻,此时的元素有3个:3 1 2,此时的LIS为2疑问:为何?答:1比2小,如果我们换一个思路,逆着思考,以某元素结尾的的LIS为多少,那么便好解释了,2是接在以1为末尾的LIS,因为2大于1,所以LIS长度可以加上1。
2024-02-21 21:25:00
406
原创 快速幂求逆元
关于求逆元,实际上就是数论上费马小引理和扩展欧几里得算法的运用,当被求质数的逆元时,用的是费马小引理,该定理实际上和欧拉函数同出一源,因为该定理的前提就是指数为质数。int kuai(int a,int k,int p)//快速幂求a的k次方,在此过程中直接计算%p了,方便。ll ans=1;return ans;cin>>n;cin>>a>>p;else。
2024-02-03 18:33:50
349
1
原创 欧拉函数的推导过程(简单向)
给定任意正整数X,求小于或等于X的正整数中,与X互质的数的个数,而求这些个数的方法即为欧拉函数。设φ(n)为欧拉函数,则其公式为:n可以用若干个质数的幂相乘表示,而X则为质数。
2024-01-14 21:04:30
1627
1
原创 Djkstra解决最短路问题
在提一嘴,如果有多条路到某一点,那么保留最短的那一条便可以了,因为,到终点的距离都是所以最短路组成的。另外,这个算法不能算带有负权边的最短路,可能会算错,因为dijksta更新时是更新未更新的点,已更新点到其他点的距离不会再进行更新了,导致有负数的那条边不会保留,而是会跳过。
2023-12-17 10:08:49
890
1
原创 bfs解决八数码问题
这就是bfs用图来描述,大概就是将每一层的情况遍历一般,判断是否存在某一个点是符合操作的,如果存在,那么就输出当前层数。
2023-12-10 11:21:29
509
1
原创 dfs解决八皇后问题
八皇后问题主要是运用dfs算法去解决,而dfs关键的一定就是要知道哪个位置要记录被搜过,而且要看需不需要恢复现场,有的在树的深搜下是不需要恢复现场的,总而言之,言而总之,要比较熟练地掌握dfs。
2023-12-03 10:19:20
917
1
原创 c++中的高精度算法
虽然这些都有点复杂和蠢,但是对于刚开始接触算法的萌新来说(比如我)还是很好理解的,对于以上的代码,无一不用到了STL里的函数,所以,建议去学习一下STL里的函数,这玩意儿对于写代码还是很好用的。最后,希望本篇文章对您有帮助,虽然很简陋。如果有更好的思路,可以的话希望能提出,毕竟是学术性的交流,虽然作者很弱。。。
2023-11-19 11:14:34
865
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人