自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 谢希仁第八版计算机网络期末复习(自检提纲,后附大题答案)

==计网复习==根据计算机网络第八版谢希仁,回答以下问题:拓扑图,分配IP,配置命令最后两个不要求静态路由,动态路由,VLAN,课后习题为主。

2025-03-18 11:20:55 809 1

原创 STL详解

频繁随机访问:使用 vector单端数组需要两端插入删除:使用 deque双端数组需要中间插入删除:使用 list双向链表需要有序存储和查找(不重复):使用 set, map需要无序且高效查找:使用 unordered_set, unordered_map需要后进先出:使用 stack需要先进先出或优先级操作:使用 queue 或 priority_queue。

2025-03-15 10:59:52 790 2

原创 笔试强训Day38-1.15(Leetcode)

01^10=11,00^01=01,00^10=10,11^01=10,11^10=01……超时,由于使用了优先队列,当x很大时,入队出队非常浪费时间。---》通过37%。---》通过50%。该代码中,state有四种状态00、01、10、11。旋转 180° 等价于将矩阵上下翻转后再左右翻转。=当前状态:异或之后可以保存这两种状态。初始状态=当前状态:异或为零,回到原始状态。分别存储前 i 个元素的最大值和次大值。在遍历时动态更新最大值和次大值。行镜像操作就是简单的上下翻转。

2025-01-17 18:11:40 533

原创 平均(2023-省赛-贪心)

有一个长度为 n 的数组(n 是 10 的倍数),每个数 ai 都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为 bi,他想更改若干个数的值使得这 10 种数出现的次数相等(都等于 n/10​),请问代价和最少为多少。只更改第 1,2,4,5,7,8个数,需要花费代价 1+2+4+5+7+8=27。题目中说明了更改后的每个数字出现次数是n/10,而不是最后每个数字只剩下一个。接下来 n 行,第 ii 行包含两个整数 ai,bi,用一个空格分隔。

2025-01-13 21:34:08 440

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(7)

这段代码实现了一种有效的数据增强方法,可以在图像分类等任务中提高模型的性能和泛化能力。通过随机选择矩形区域并将其像素值设置为给定的均值,可以增加数据的多样性,使模型对不同的变化更加鲁棒。同时,代码中的参数可以根据具体的任务和数据集进行调整,以获得最佳的效果。这段 Python 代码实现了一种名为 “Random Erasing” 的数据增强方法,该方法随机选择图像中的一个矩形区域,并将其像素值设置为给定的均值。这种方法可以增加数据的多样性,提高模型的泛化能力。

2025-01-13 17:23:34 478

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(6)

然后遍历训练图像路径列表,为每个图像生成对应的身份标识、图像索引、图像路径、标题和一个固定的相似度列表,并将这些信息存储在一个列表中作为训练数据集。它遍历测试图像路径列表,为每个图像生成对应的身份标识、图像路径、标题和标题对应的身份标识,并将这些信息存储在一个字典中,最后返回这个字典作为测试数据集。的作用是合并多个 JSON 文件的内容到一个字典中,其中字典的键是图像文件名,值是一个列表,包含了来自不同 JSON 文件中对应图像的内容。分别处理训练标题路径列表和测试标题路径列表,得到训练和测试的标题字典。

2025-01-13 17:22:46 1166

原创 最全数据结构期末复习(选择+判断+代码:易错汇总)

但是要注意在这个而操作之前是否有多余的回车被读入(例如输入了两个整数,再输入回车,在开始输入每行的字符)使用getchar()进行清除。而对于除源点之外的其他顶点,在初始状态下,还没有开始进行路径的探索和松弛操作,我们不确定是否能从源点到达它们,以及有多少条最短路径,所以默认初始化为。完全二叉树:若堆的深度【层数】为h,除了最后一层,其上各层 (1~h-1) 的结点数都达到最大个数,并且最后一层所有的结点都连续集中在最左边,这就是完全二叉树。遇到无输出,且该代码有指针时,一定要记得指针后移!

2025-01-13 17:22:13 881

原创 笔试强训10.28

/注意思路:并不是把前n个最大的pop掉,再把n个大的加和,而是一组一组的取,这样取出来的才是最大的。(选择部分点且要求输出最大值时)//注意不要忘记给数组初始化。

2024-10-28 19:59:57 816

原创 笔试强训10.27

思路:只需满足重复次数最多的字符串个数小于其余所有字符串的个数,就能完成。注意str数组要开辟在主函数外,否则答案错误。思路:滑动窗口来实现。//66.67%代码。

2024-10-28 19:59:43 188

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(5)

这段代码定义了一个用于处理 ICFG-PEDES 数据集的类,包括数据的初始化、分割注释、处理注释和检查数据可用性等功能。具体各个部分代码功能同该专栏第四篇。代码所属:datasets/icfgpedes.py。

2024-10-27 16:03:22 372

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(4)

例如,如果`Child`类的父类从`Parent`变为`NewParent`(假设`NewParent`也有兼容的`__init__`方法),`super()`调用仍然可以正常工作。如果是训练数据,会遍历注释列表,将每个注释中的图像路径和对应的标题添加到数据集列表中,并维护一个身份容器。如果是测试 / 验证数据,会遍历注释列表,将图像路径、标题和对应的身份标识分别添加到不同的列表中,然后构建一个字典作为数据集返回,并返回身份容器。- **优点** - 比较直观,容易理解,尤其是对于简单的继承关系。

2024-10-27 16:02:38 772

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(3)

过滤加载器函数的主要作用是根据特定的参数配置和数据集,创建一个经过过滤处理的数据集,并提供一个方便的数据加载器来高效地加载和处理数据,以满足特定的数据处理需求,可能是为了去除某些不符合特定条件的数据样本,或者对数据进行特定的预处理操作,以便后续的模型训练或其他数据分析任务能够更加高效地进行。(将输入的批次数据(一个包含多个字典的列表)转换为一个字典,其中键是数据的字段名,值是一个列表,包含该字段在每个样本中的值,并将值转换为张量或堆叠起来。),并创建对应的验证数据加载器。中的对应字典中获取的。

2024-10-22 19:52:52 900

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(2)

通过这种方式,可以方便地在不同的代码文件中复用数据加载的逻辑,提高代码的可维护性和可扩展性。:当你希望快速创建一个新对象,并且新对象和原对象共享一些不可变对象(如数字、字符串等),但对于可变子对象可以接受它们被同时修改时,可以使用浅复制。例如,对一个包含大量不可变元素和少量可变子对象的复杂数据结构进行复制时,浅复制可以节省时间和内存,因为不需要完全复制所有的内容。是一个用于科学计算的强大 Python 库,提供了高效的多维数组对象和各种数学函数,广泛应用于数据分析、机器学习等领域。库,即 PyTorch。

2024-10-22 17:14:22 948

原创 Harnessing the Power of MLLMs for Transferable Text-to-Image Person ReID利用MLLMs实现可转移的文本到图像的人ReID(1)

*一、特定操作的禁用** 1. Dropout 禁用 - Dropout 是一种在训练过程中常用的技术,它以一定的概率随机将神经元的输出设置为零,以防止过拟合。- `AutoModelForCausalLM.from_pretrained`: - 参数如`device_map`(指定模型加载到的设备,如“cpu”、“cuda”或“auto”)、`torch_dtype`(指定模型参数的数据类型,如`torch.float32`、`torch.bfloat16`等)主要影响模型的性能和资源利用。

2024-10-19 22:11:13 982

原创 python基础知识汇总

tokens=s.split(' ') # 这里将传入的字符串s按照空格进行分割,得到一个包含多个单词的列表,赋值给变量tokens。例如,如果s是 "I am a student.",那么tokens将是['I', 'am', 'a', 'student.']。在上面的例子中,反转后的tokens变为['student.', 'a', 'am', 'I']# a.insert(1,'hello')# 在下标为1的地方插入'hello',其余元素后移。

2024-10-19 18:52:46 681

原创 笔试强训10.19

注意带空格的字符串的输入。

2024-10-18 22:12:04 335

原创 笔试强训10.18

/注意要开long long,超出int的数据范围了!

2024-10-18 21:32:41 260

原创 笔试强训10.17

用双层循环会超时,所以改用动态规划的思想。(核心是通过一次遍历找出符合条件的最大值和最小值,一次循环保证卖一定在买后面)。//法四:Manacher算法。//法三:hash+二分。

2024-10-17 21:31:14 795

原创 笔试强训10.16

注意:cnt

2024-10-17 21:31:01 287

原创 笔试强训10.15

二维DP,令dp[i][j]表示从左上角到达(i,j)所能得到的最大价值,则答案为dp[n][m],初始化时,所有dp[i][j]的值为当前点的价值,转移方程为dp[i][j]=max⁡(dp[i−1][j]+dp[i][j],dp[i][j−1]+dp[i][j])。注意:最后的结果可能很大,超出int(默认类型)的限制,不能直接输出a/i*b。而且要先/i再*b。注意:数组中有重复的元素的话就要跳过(隐含条件)。

2024-10-15 20:33:40 229

原创 笔试强训10.14

2.注意当输入的字符串的最长连续数字串在最后时,此时就不会进行else的判断,需要出了while循环后再进行判断。思路:找到一个‘1’,就开始搜索,把周围上下左右的上下左右的上下左右......都变成‘0’。1.使用strcpy是把右参数赋值给左参数,而且左参数必须有终止符'\0'。//注意使用该函数之前把数组sort一下。

2024-10-15 16:40:40 290

原创 数据结构期中代码注意事项(二叉树及之前)1-11

7.要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。当创建了一个新链表时,一定记得实现开辟头结点的空间,让尾指针指向头节点,然后开辟每个结点的空间,尾指针的next指向该节点,尾指针后移。创建二叉树时记得创建的是每一个节点,和链表不同,这个是通过递归把左右子树的节点地址保存在该节点中实现的。

2024-10-14 18:38:27 1314

原创 数据结构期中考试复习(二叉树及之前)1-12

/*入,+比*优先级低,*出,+入,/入,/出,+出。链式存储结构适用于增删,顺序存储结构适用于查改。//下面这个题错是因为说法太绝对......//关键在于可以直接访问其前驱指针。//这个特别注意一下******//每一层都有k-1个叶子节点。i与j的大小比较决定了公式。//最后修改p指针的指向。//注意下面两个题的区别。

2024-10-14 18:38:23 244

原创 排序----基数排序、桶排序(附排序总结)

建立一个指针数组,指针指向一个链表,然后再对链表排序。永远只建立一个筒,只适用于全是两位数或者全是三位数的排序。从个位开始往高位不断排序,把各个数字按每一位的顺序排起来。当对结构体排序的时候,稳定性变得很有意义。稳定性:一般排序的时候需要跨位置就不稳定了。归并排序当相等的时候取前一个就稳定了。

2024-09-24 20:26:39 299

原创 排序-----计数排序(非比较排序)

所以要相对映射,不要绝对映射。存在的问题:数组空间浪费。

2024-09-24 19:59:20 201

原创 排序----归并排序(非递归版)

但是我们测试的时候会发现这样一个问题,begin和end的值会存在越界的问题,而且只有begin1不会越界,因为begin1是受for循环中i的控制的。这种情况下,只有前两组归并了,但是后两组没有归并,如果是全都归并完了再整体拷贝,那么原数组中的8 9会被覆盖,就产生丢失数据的问题了。所以当我们遇到begin越界了就不用管了,遇到end越界就修正一下。如图代码为11归并的示例,用for循环来解决。每一次往前递归的前一小部分内部已经是有序的了。

2024-09-24 18:41:14 342

原创 排序-----归并排序(递归版)

核心思想:假设数组前后两部分各自有序,然后各定义两个指针,谁小谁放到新开辟的数组里面,最后把新开辟的数组赋值给原数组就完成了。要使前后两部分有序就采用递归的方式,不断往下划分块,最后一层划分为两个元素一组或者一个元素一组,这样一层一层地往上递归排序,就实现了整个有序。时间复杂度:O(N*logN) 因为是递归,递归了logN层(二叉树高度),每一层比较N次。注意:以下的分块方法会出现问题,[2,3]这个区间一直存在,会死循环,进而栈溢出。空间复杂度:O(N) 多开辟了tmp数组的空间。

2024-09-22 21:41:04 412

原创 排序----快速排序(快排)(非递归版)

举例:我们首先进行0~9的遍历,然后key最后放到5这个位置,之后便被分成了0~4和6~9这两个区间,但是我们不想用递归的方式写,那就把0 4和6 9这四个数据压入栈中,每次取栈顶数据进行排列。那么采用什么顺序呢?因为我们采用的是先把左子树排完再排右子树,所以先把6 9压进去,再把0 4压进去;又因为只能压入一个数据,所以先压入右边的坐标,再压入左边的坐标,就能很好的解决这个问题了。还有另一种思想(不做代码演示):如下图是一个队列,每次先进先出,那就类似于层序遍历了,是广度优先。

2024-09-22 20:25:58 228

原创 排序----快速排序(快排)(递归版)

当我们要排序的序列是一个有序序列时,我们选择第一个元素为keyi,但是end找不到比keyi的元素更小的元素,那就一直往前走,走到头和自己交换一下;在这一块数据中,记录第一个元素为key,然后设置L和R两个指针,L找比key处的元素大的,R找比key处元素小的,找到了就交换这两个位置的元素。当两个指针相遇时,若相遇点的元素比key处的值小,就把相遇点的元素与key处的元素进行交换;那么这样走完一趟的过程中,key处的元素就位于正确的位置,同时,key左侧的元素都比他小,右侧的元素的都比他大。

2024-09-21 20:54:32 539

原创 排序-----选择排序

本文介绍优化后的版本:每次遍历标记出最小的和最大的元素,分别放到前面和后面。(注意这里是找到对应的下标,然后将对应下标的数据进行交换)这个地方第一次交换就出现问题了,因为maxi和begin重叠,导致最大值并没有移动到最后。选择排序是每次都遍历,标记出最小的元素,然后把它放在前面。注意最后不要忘了begin++和end--。这个排序最好情况和最坏情况都是O(N^2)。那么问题出现在哪呢?这段代码是有问题的!

2024-09-20 21:47:56 278

原创 排序----希尔排序

然后要注意到的是内层while循环的条件,如果下一个位置的数据tmp比end这个位置的数据小,那么我们还要比较tmp是否比end-gap位置的数据小,如果还小,那么end就要一直前移gap个位置,最差的情况是end移动到了0-gap这个位置,就说明此时tmp是它及其它之前的所有元素中最小的那个,那么只需要把end+gap=0这个位置的数据赋值上tmp(0+gap及其之后的元素在while循环中已经被赋值完成了)。gap越大,大的元素就可以越快跳到后面,小的元素就可以越快跳到前面,但是越不接近有序。

2024-09-20 21:17:46 1443

原创 排序---冒泡排序、堆排序

相邻两个位置交换,假设排升序,就不断把最大的往后拿,所以这段序列从后往前变得有序。二、堆排序(数组实现)

2024-09-20 19:19:06 205

原创 排序----插入排序

一开始把第一个元素看成是有序的,然后从第二个元素开始拿出来与前面的数据比较,若前面的数据小,就把前面的数据不断后移(注意要把拿出来的那个元素提前保存下来),直到遇到比自己小的元素,然后插入到它的后面。看下面这张图,1插入的过程中end不断--,end最后等于-1,但是循环可以进行的条件是end>=0,所以会提前结束然后tmp并没有保存到下标为0的位置,这样就错了。//注意外部循环i是从0到n-2,因为你要拿出来的元素是从1到n-1,拿出来的元素下标为end+1,由此可以得出end的取值范围i。

2024-09-19 21:50:24 183

转载 最大子段和

最大子段和(分治法+动态规划法)_分治求数列的最大子段和-优快云博客

2024-09-19 17:17:10 57

原创 数据结构---二叉树例题讲解

1出来带2.4,2出来带3.6,4出来带空.空,3出来带空.空,6出来带空.空,下一个就到空出来了,空出来的时候队列中只剩下空的话,此时该二叉树就是完全二叉树;借助队列实现,从根节点开始入队,根进去,然后把根拿出来,把根的左右孩子放进去(队尾进),再拿出队列的第一个元素(根的左孩子,没有左孩子就是右孩子),再把这个元素的左右孩子放进队尾,逐渐循环......注意:队列中存的是节点的地址,当执行QueuePop的时候,删掉的那个节点是队列的节点,并不影响二叉树的相应节点。其余代码与上一题一样。

2024-09-17 21:48:53 1159

原创 函数栈帧的建立与销毁

ebp和esp这两个寄存器中存放地址,存放的地址是用来维护栈帧这个空间的。//不同编译器的这个过程是不同的,本文基于VS2013(越高级的编译器越不容易观察)* 主调函数中运行到被调函数这一条指令(call指令)时,会记录下下一条指令的地址。* 通过把值赋值给全局的寄存器,因为全局的寄存器不会随着函数的结束而销毁。(分配出去的空间需要记录地址,当操作系统回收的时候就找到这个地址)* 形参是实参的一份拷贝,值相同,但是地址不同。(电脑上的几种存储:硬盘,内存,寄存器)3.被调用的函数是如何返回的?

2024-09-16 21:30:58 156

原创 数据结构----栈与递归例题讲解

6.输入一个数N,将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…递增顺序是指:对于两个分解序列N1​={n1​,n2​,⋯}和N2​={m1​,m2​,⋯},若存在i使得n1​=m1​,⋯,ni​=mi​,但是ni+1​<mi+1​,则N1​序列必定在N2​序列之前输出。, an是集合{1, 2, …, n}的一个排列,如果i<j且ai>aj,则序偶(ai, aj)称为该排列的一个逆序。例如,2, 3, 1有两个逆序:(3, 1)和(2, 1)。

2024-09-16 16:34:56 574

原创 数据结构------二叉树简单介绍及实现

/这段二叉树的递归代码编译完了之后是一份指令,这份指令会自己调用自己,不断建立栈帧,然后销毁栈帧。// 实现查找,最多找高度次(类似二分法)//同一个函数不同的值递归占用的空间是一样的,因为销毁了之后再接着用。//二分查找存在的问题:排序;必须对数组操作,插入删除不方便。//搜索二叉树:左子树的所有值比根小,右子树的所有值比根大。如果不是满二叉树或者完全二叉树,就要用链式存储。//不能递归的深度太深,不然会导致栈溢出。

2024-09-12 20:41:18 275

原创 数据结构——二叉树(堆)

/法二:建k个数的小堆,然后往后取数据,该数据大于堆顶数据就将堆顶数据替换为该数 // 据,然后进堆进行向下调整。//找左右孩子中更小的节点进行数值交换,知道符合小/大堆,或者走到了叶子节点(该位置处坐标*2+1是否超出数组范围)//这样不断找堆顶元素的过程就是不断从小的数开始往外pop,时间复杂度好,但是空间复杂度为O(N),这样不好。//因为向上调整的过程中,child的下标最终在parent的下标之上,所以,判断条件应该改成child>//二叉树的高度计算公式。

2024-09-09 21:40:05 331

原创 数据结构——栈和队列

这个pushst和popst都不能是指针类型,因为后续要给这个结构体malloc,如果是指针的话,tmp malloc出来的空间里面放的都是指针的大小,指针的大小是固定的字节数(4/8),这个地方只有用栈对象才可以访问栈里面的元素。//也不能把他定义成全局或静态,因为测试用例可能会调用好几次create函数,但是定义成全局或者静态的之后底层就只有那一个空间,程序就不对了。//思路:把数据都存放在pushst中,popst专门用来出数据,当popst中空了之后,就把pushst中的数据移动到popst中。

2024-09-08 19:27:08 575

空空如也

空空如也

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

TA关注的人

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