- 博客(7)
- 收藏
- 关注
原创 c++练习7(图论)
我们用一个 的二维数组来存储一个图,存储规则:若x 能到达y ,那么(x,y) 代表的就是x 到 y的距离,如果无法访问,我们用 -1或很大的数来表示。特别地,自己到自己的距离为0//初始化整张图//当 sizeof 后面接的是表达式或者变量名时,括号是可选的。当 sizeof 后面接的是类型名时,必须使用括号。i <= n;//遍历全图i <= n;++j) {邻接矩阵只适用于没有重边(或重边可以忽略)的情况。其最显著的优点是可以 查询一条边是否存在。
2025-02-19 20:21:56
877
原创 c++ 练习6(dp)
求最长上升子序列的长度:i < n;++i)else//greater<int>() 作为 lower_bound 的比较函数,改变了其默认的查找规则,使其能在降序序列中找到第一个不大于目标值的元素位置。求最长不上升或不下降子序列的长度使用函数。
2025-02-16 21:40:51
294
原创 c++练习5(搜索,DFS,BFS)
当步骤相似时,可以考虑递归。做出某一步的决策,然后进入下一步,直到碰到边界;回头,还原现场,尝试其它决策的可能。这个过程就是深度优先搜索(Depth First Search,简称DFS)。其中,走回头路还原现场的部分有个别称:回溯。从队列队首取出一个状态,拓展;从队列队尾存入合理的新状态;重复上述两步直到边界这个过程就是广度优先搜索(Breadth First Search,简称 BFS不需要知道所有可能结果可以使用BFS或DFS,需要知道就只能用DFS。
2025-02-13 20:42:20
491
原创 c++练习4
唯⼀分解定理 定理:任何⼤于 1 的正整数都可以唯⼀地(忽略因⼦顺序)表示为素数的乘积。意义:这⼀定理为数论提供了坚实的基础,常⽤于求解整除问题、最⼤公约数(GCD)、最⼩公倍数等。区间筛法:首先,我们找到所有小于等于sqrt(R)的素数。然后,我们使用这些素数来标记区间[L, R]内的合数。最后,剩下的未标记的数就是素数。
2025-02-10 21:23:38
771
原创 c++练习3
ST 表适用于数据不会发生变化的场景(即没有更新操作)。默认为大根堆, 小根堆写法 priority_queue<int ,vector,greater > p;
2025-02-07 19:49:26
262
原创 c++练习2(二分法)
当代码逻辑找不出错误时,可以检查是否存在数值范围不足以表示需求,例如当int类型的数值范围不足以表示需求时,可以使用类型。能使用二分法的题目不一定都很明显,当所求是在一定范围中,并利用某一条件加以判断,可以考虑使用二分法。使用二分法时,若循环条件为l<r,则mid=(l+r+1)/2,因为当l=r-1的时候,此时区间为[l,r],, l=mid,更新后区间变为[mid,r],也就是[l,r],和原来一模一样,然后就会陷入无尽的死循环。
2025-01-26 16:36:56
371
原创 c++练习1
一个问题可以分为几个小步骤解决,这样更直观,正确率更高。当一个很大的数只有较少位有用,就可以使用字符来解决。cin >> c2;会跳过空白字符(包括换行符),可使用cin.get()。一个问题可以分为几个小步骤解决,这样更直观,正确率更高。当一个很大的数只有较少位有用,就可以使用字符来解决。cin >> c2;会跳过空白字符(包括换行符),可使用cin.get()。有时候只需要得到结果,不在乎过程就可以减小时间复杂度。对于一些没有思路的题目,可以先找出几个特例去寻找规律。
2025-01-23 14:49:40
323
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅