
日常编程心得
文章平均质量分 86
余丰旭
这个作者很懒,什么都没留下…
展开
-
2021年6月/7月
2021-7-18并查集Union-find算法,主要解决的是图论中的动态连通性并查集数组实现(路径压缩)#include <iostream>using namespace std;#define MAXN 10int fa[MAXN+1];void init(){ for(int i=1;i<=MAXN;i++) fa[i]=i;}//返回当前节点的根节点,并进行路径压缩int find(int x){ if(fa[x]==原创 2021-07-19 15:16:56 · 93 阅读 · 0 评论 -
2021年5月
2021/5/31无向图的生成树(使用尽可能少的边将所有顶点连在一起)包含所有顶点任意两顶点之间有边构成唯一路径百度百科定义:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边书上定义:极小连通子图为某一顶点子集所确定的连通子图中包含边最少的连通子图(n个顶点,无向连通图最少n-1条边,有向连通图最少n条边——成环)。图全部顶点所确定的极小连通子图即为连通图的生成树。即包含所有顶点的极小联通子图就是生成树。在代码中实现,用并查集原创 2021-07-19 15:15:47 · 311 阅读 · 0 评论 -
2021年4月
2021/4/17多个选项中选多个的题目,计算合法方案数。这种题目可以利用全排列来写六个里边选三个int arr[]={0,0,0,1,1,1,};消除尾一:x=x&(x+1)经典的二进制题目!10个数的全排列,时间复杂度为10!最大公共子串和最大公共子序列在二维动态规划时,是不一样的前者的状态转移是if(s1[i-1]==s2[i-1]) dp[i][j]=dp[i-1][j-1]+1;后者需要分三种情况进行讨论。背包问题的精髓在于:在递归或动态原创 2021-07-19 15:14:45 · 115 阅读 · 0 评论 -
2020年12月
2020/12/23对于递归函数,其空间复杂度与最大递归深度有关递归的诀窍在于找到形式相同但规模更小的子问题python函数中可以定义函数,但是参数不能不能写self,调用的时候直接写函数名即可树的深度优先遍历,一条路径末端不一定是叶节点!如:这里的1向右深度优先递归结束了,1不是叶节点2020/12/24python判断是否是字母或者数字的函数isalnum动态规划的精髓在于找到第i项和前i-1项(或第i-1项)的关系动态规划是由规模较小的问题不断得到较大规模问题解的过程原创 2021-07-19 15:14:02 · 109 阅读 · 0 评论 -
2021年1月
2021/1/4快慢指针的精髓在于:快指针最终会追上慢指针,以证明链上有环存在为什么判断质数的时候只需要验证[2,floor(n1/2)] 注意右边是闭区间中数是否能被n整除,因为大于n1/2的数不可能被n整除找n以内的质数个数,更优的方法:筛质数从2开始,每次将2的所有倍数做False标记,然后是3,将3的所有倍数做False标记…最终从2开始所有没有标记到的就是质数的合集python同时变量两个序列,可以用用zipfor a,b in zip(s1,s2):pytho原创 2021-07-19 15:09:33 · 86 阅读 · 0 评论 -
2021年2月
2021/2/17涉及2的多少次方的问题,可以使用移位运算<<和>>,能够大大加快运算对一个数组进行逆置(或者其他半数的操作),for循环如此for(int i=0;i<len/2;i++)就对了快速排序的代码循环条件p<=r的原因是,r下标的元素并未处理,需要p来处理完成后才覆盖所有元素快速排序核心思想:每次都确定一个(或多个相同)元素的最终位置注意一定不能写成: int pivot=left; 后续用arr[p] < arr[pivot];! 因原创 2021-07-19 15:08:41 · 85 阅读 · 0 评论 -
2021年3月
2021/3/1判断一个乘式末尾有多少个0,答案就是min(因子2的个数,因子5的个数)。即使某个乘子末尾本身就用0也不用考虑,因为10本身就是2和5的积。丑数(因数只有2,3,5)类似的题,都可以用三指针来做开始时三个指针都指向dp数组0位置,每次满足条件+1;C++的set和map具有排序功能注意:在接收字符或字符串后,再接收一行字符,在此之前需要吸收到回车2021/3/2对于联通块问题,常采用计数的方法解决此外,规模较小的可以采用深度优先遍历,规模大的采用宽度优先原创 2021-07-19 15:07:05 · 138 阅读 · 0 评论