- 博客(9)
- 收藏
- 关注
原创 浅谈巧妙算法:递归(1)
2021.7.28何为递归递归是函数和过程调用自身的一种特殊形式,即允许函数和过程进行自我调用。其特点是抽象性和简洁性,很多时候可以大大降低时间复杂度,获得较优解。如何选择和应用不同的递归常见的有:线性递归,二分递归,多分枝递归等下面进行逐一介绍…1.线性递归:这种形式中,应用问题总可以分解为两个独立的子问题,即减而治之。通过将一个大问题不断分解成小问题,小问题分解为更小的问题…最终退化为简单问题。eg:数组求和~计算给定n个数的总和int sum(int A[], int n){ if(
2021-07-29 01:37:20
192
原创 起泡排序(冒泡排序)
起泡排序(冒泡排序)摘自书本:我们不难知道,在有序序列中每一对相邻元素都是顺序的,既对任意1 <= i <= n,都有A[i-1] <= A[i];反之,所有所有相邻元素均顺序的序列,也必然整体有序。起泡排序思想:通过不断改变局部的有序性实现整体的有序,从前往后扫描每一对相邻元素,一旦发现有逆序随即交换二者元素的位置。对于长度为n的序列,共需要做n-1次比较和不超过n-1次交换,这一过程称作一趟扫描过程。而一趟扫描,整个序列并未达到整体有序,故需要进行多次扫描,交换直到在序列中不含有任
2021-07-28 00:53:53
2387
原创 CSP-S赛场小技巧(1)
cin cout 的快速读入输出代码:ios::sync_with_stdio(false);注意:1.此时scanf不应与其共用2.一定记住要把这条语句放在freopen()后面
2019-09-19 18:48:06
347
原创 Floyd——最短路算法
在图论中,我们不少遇到关于求两点之间最短路径的题目。这是比较经典的。在此,介绍一个非常非常容易理解的算法——floyd。时间复杂度:O(n3)优点:适用于出现负边权的情况算法描述:a.初始化:点u, v如果有边相连,则dis[u][v] = w[u][v].如果不相连,则dis[u][v] = 0x7fffffff(无穷大)b.核心内容:for(int k=1; k<=n; k...
2019-09-16 19:38:18
257
转载 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?
本文链接:https://blog.youkuaiyun.com/jiange_zh/article/details/50198097在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具体问题取一个99999999之类的数(显得很不专业啊!)在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇怪为什么设一个这么奇怪的十六进制数,一查才知道,因为这是32-...
2019-09-16 19:17:14
198
原创 DFS的高维【四维DFS】洛谷p1006传纸条
本题的原理与洛谷p1004方格取数相同。在不考虑优化的情况下可以直接使用四维dp,因为数据较弱,最多也只有505050*50=6250000的复杂度,不用担心爆空间或超时。还请各位用三维二维数组的大佬不要鄙视本蒟蒻~题解:就是用f[i][j][k][l],其中[i][j]存小渊来信的路径,[k][l]则存小轩的。这信一来一回啊,可以等价于信从小渊这里向右下方传了两次,(这样是不是基本上算p1...
2019-08-04 00:11:35
340
2
原创 高维DFS(四维DFS) 模板题——洛谷p1004方格取数
关于题目:1.求路径最大的方法,我们在日常大多用到的即是DFS(深搜)和DP(动归)。2.由于这是2000年noip提高组的T4,推测出题人并不会单纯想考DFS(并且那两年DP的命中率很高),所以我便想用DP试一试。3.看到有大佬的题解优化到了二维数组,很佩服!但是当已经身处考场,未必能在短时间内想到二维数组的方法此时,能不能用高位数组过呢?4.我们找到一个东西叫做四维DP,因为这题是两...
2019-08-02 23:02:15
430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人