自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 有向图的强连通分量

然后搜索领点,如果领点还没有搜索过,那么就递归进入,然后等到回溯的时候用领点的追溯值更新自己的追溯值(因为领点可以达到的点自己也已i的那个可以达到)。下面的代码就是你在搜索的过程中如果一个点的领点都搜索完了,且这个点的追溯值和时间戳相等,那么这个点就是极大连通子图的代表点了。然后就是极大连通子图的数量加一,通知这个极大连通子图的点都出栈且标号,因为这个点是代表点,所以这个点在栈的最下面,所以循环走到这个点的时候结束,到这个点之前的其他点都是这个极大连通子图的点,这些点也需要标号,标志他们属于哪个点。

2024-07-20 17:15:59 561

原创 C++之lamda表达式(1)

:lower引用的是<cctype>头文件中的,是全局命名空间中的,而std::lower是std命名空间的,也不是个函数指针。所以在这里就是错误的。这里第四个参数接收一个函数指针,写lamda表达式是对的,下面这样写也是对的。刷CCS-CSP的时候碰到字符串全部转小写的问题,下面给出了它的实现。

2024-07-14 11:14:34 94

原创 资源类dp

假如我们对这些个资源进行分配,分配2和分配4的资源是可以放到分配序列的最后。这里是就是说GPU和CPU1的时间,以及GPU和CPU2的时间之和是小于CPU1或CPU2占用的总时间。这点很好理解,你可以将GPU和CPU1用的总时间加上GPU和CPU2用的总时间中的GPU占用的时间排在一起,这样剩余的CPU所占的时间一定不会有冲突。若已采用分配1和3的任务中,CPU1占的总时间是i,CPU2占用的时间总是j,GPU占用的总时间是k,那么这些任务的所有分配方式中最优分配方式的时间是max(i,j,k)。

2024-07-14 10:58:49 278

原创 C++11新特性(1)

委托构造函数通过成员初始化列表直接调用另一个构造函数,不需要构造函数体内的代码,更为简洁和直接。而在构造函数内部调用其他构造函数则需要在函数体内明确调用其他构造函数或者其它初始化代码。委托构造函数通常更清晰和易读,因为初始化过程集中在初始化列表中;而在构造函数内部调用其他构造函数则可以在构造函数体中执行更复杂的逻辑,但可能会使构造函数变得更加复杂和冗长。委托构造函数是 C++11 标准引入的新特性,而在构造函数内部调用其他构造函数则是更早期就可以使用的技术。

2024-07-12 10:02:31 286

原创 整数因子分解

举个很简单的例子,如果n=6 dp[0]=1;因为数的所有因子均被列出,根据算数基本定理,n的一个可以被分解的因子分解出来的因子,一定仍然是n的因子,且这个因子比被分解之前小(显然)。由于每个质数因子都有1和它本身,所以就是dp[0]=1,在循环的过程中,质数的dp数组只会被初始化为1,而合数的dp数组则会被拆解。也就是说,每个合数的本身分解(1和自身,而且这个拆解都是由dp[0]转移过来的,而不是dp[本身],内层循环到j=i就终止了,也就是它本身不会与本身作除法)和拆解在循环过程中都会求到。

2024-07-12 09:09:33 300

原创 鱼塘钓鱼问题

这句话就是为了优化,找到第一个大于等于t的下标,因为在池塘间转移的时间不可能大于总的钓鱼时间吧,那还钓啥鱼呀,都去走路吧 这里举个简单的例子吧,假设i从2开始转移,也就是从第二个池塘开始转移,因为第一个池塘c[i]为0,以这个为例子讲转移不够清楚。··这里的f[i & 1][j] = f[(i - 1) & 1][j - c[i]];··第二层循环终止条件是j>c[i],因为对消耗转移时间的池塘来说,j<=c[i]的话收益一定是0,不会再有状态转移,一定要有给下一个池塘分配的时间。

2024-07-12 09:05:10 823

原创 最大多子段和问题

定义以此为结尾的集合数组,dp[i]指的是以a[i]结尾的最大字段和。个人觉得是因为没有单调性,就像例子中给出来的子序列,我想维护这个连续序列和但是这个值不是单调的,比如和从11走到-4的时候,和会被更新,但是紧接着又增大了。这就破坏了双指针的单调性。这里一直搞混了更新的过程,不是res在降低(遇到负值)的时候就更新res,而是在新的元素假如序列比单独的一个元素的和要小的时候才要更新元素。例如,给定序列 {−2,11,−4,13,−5,−2},它的最大子序列为 {11,−4,13},其各元素之和为 20。

2024-07-12 09:01:10 289

原创 边权并查集之奇偶游戏

可以看出每个点此时维护的都只是和父亲结点的奇偶性,而在路径压缩之后,就是对根节点(此时也就是每个结点的父节点)的奇偶性质(图中未给出)。比方说,假如1是奇,2到它的距离为1,所以2是偶数,3在路径压缩之前是偶数(到2的距离是2),3作完路径压缩之后到1的距离是3,与压缩之前和1结点的奇偶性是一致的。图中也给出了解释,是+=d[fa[x]],因为递归得到的根结点,而d[fa[x]]表示父节点到根节点的距离,加上根节点的距离是没有意义的。最重要的一点是,矛盾一定产生于已经给出的条件,也就是已有的一个集合。

2024-07-12 08:56:56 374

原创 递归路径问题

最近写一个矩阵连乘的问题,在打印括号的时候遇到了难题,不知道括号和序列怎么输出才能得到标准的加括号序列,在网上查到了一个博客发现是对的,在此记录一下,顺便和floyed打印路径的方式作对比,以此来加深对二叉树遍历的理解。记住遇到叶结点的时候直接返回了,不会深入叶结点的空间,而且每个叶结点只遇见一次,所以在叶节点打印值是最合理的。这里给每个中序的地方加上了左括号和右括号,也是对的,但是出现了很多的冗余,因为即使有一个元素也被加上了括号。二是左括号和右括号的时机,分别是在第一次遇到结点,和离开结点的时候加上。

2024-07-12 08:53:06 138

原创 ResNet代码精读

这里提一下一直以来都比较困惑的一个点:虚线残差块有两个作用,一个是改变矩阵深度,如resnet50,101,152的conv_2x的第一层,都是改变输入矩阵的深度,而不改变输入矩阵的宽高。因为输入输出矩阵的宽高是一致的。而且虚线残差块仅出现在每个conv_··x的第一层,因为经过第一层之后,矩阵的深度和宽高都被调整为对应的输出矩阵的宽高,所以后面的都是实线残差结构。这也就是为什么下面的for循环可以直接将剩下的残差块压入。这个残差块和第一个残差块我觉得唯一的区别就是这个残差块多了一层。

2024-07-12 08:45:18 187

原创 acwing排列树

刷acwing的算法进阶指南的时候,看到递归实现排列性枚举,刚好最近也是在上这一块的内容,于是想不看y总的代码敲一遍书上的代码,最后发现书上的排列树代码无法实现“其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。”仔细想想,书上的代码确实只是可以实现排列树的功能,但是和y总的dfs的思想还是有点不同的。答案是对的,但是输出顺序有点差别,算法思想有所不同,暂时未想到把书上的代码转换到答案要求的思路。搜索思想都不同,应该做不到吧。显然对于3,题目要求的输出是。而这个程序最后的输出是。

2024-07-12 08:40:24 228

原创 操作系统的引导

(磁盘文件都是我们写进去的,一开始的引导程序是在磁盘第一个区,加载到内存以后主导权就是在在内存的程序中了,然后执行这段程序,这段程序将读磁盘将loader_entry加载到内存8000处的位置,接着跳转到8000处的位置开始执行,也就是说磁盘第2到第2+64(由代码推断,实际可能没这么大),都是loader_entry的程序。_start标号处的代码就是做了一些简单的初始化。.global symbal的意思是symbal地址处的内容对文件外是可见的,也就是此文件外的程序也可以引用这个标号对应的位置。

2024-07-11 17:20:38 315

空空如也

空空如也

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

TA关注的人

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