- 博客(34)
- 收藏
- 关注
原创 TCP/IP网络编程:Linux实现的web服务器
这是客户端向服务端发送的请求消息的结构,Web服务器需要解析并响应客户端请求,从图中看出,请求信息包含请求行,消息头,消息体等三个部分,这里我们只对GET类型的进行撰写,具体的含义是:“请求(GET)index/html文件,希望以1.1版本的HTTP协议进行通信”例如,客户端请求 index.html 文件时,表示 index.html 文件是否存在、服务端是否发生问题而无法响应等不同情况的信息写入状态行。状态行中有关于请求的状态信息,这是与请求消息相比最为显著地区别。200 OK : 成功处理了请求!
2024-09-05 12:49:33 1150
原创 TCP/IP网络编程:第18章聊天室
其他两个客户端也是类似的,分别发送Hi Yoon反正就是基本上实现了一个群聊的功能。客户端:发送信息给服务端,接收服务端传来的其他客户的信息。服务端:负责连接客户端,转发客户端的信息给其他客户。
2024-09-02 11:58:31 514
原创 全球变暖(dfs和bfs)
其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 22 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。输入第一行包含一个整数N。以下 N行 N列,包含一个由字符”#”和”.”构成的 N×N字符矩阵,代表一张海域照片,”#”表示陆地,”.”表示海洋。
2024-03-27 10:11:06 312
原创 (Windows)YOLOv8成功运行DCNv4报错总结
DCNv4是可变形卷积的第四版本也是今年2024年1月份公示的,其在网络结构上和DCNv3是差不多的,最突出的优点的减小了内存访问带来的负担,加快收敛的速度,在不失精度的情况下能把速度大幅度提升,在论文作者的实验里面不对DCNv4做任何的处理,仅仅是将其替换原本DCNv3,速度提升了80%。
2024-03-25 17:17:36 5332 29
原创 树的重心(dfs)
#include <bits/stdc++.h>using namespace std;const int N = 1000, M = N * 2;int ans = N; //最小最大值int n;int h[N], e[M], ne[M], idx; //使用邻接表来存树bool st[N];//标记数组void add(int a, int b) { //表示将b插入到a的后面 e[idx] = b; ne[idx] = h[a]; h[a] = idx++;}
2024-03-20 16:02:56 111
原创 小蓝的钥匙(蓝桥杯错排)
假设错排函数是An,表示的含义是n个人都不对应自己的钥匙,则现在拿出其中一个小朋友i,单独讨论,假设已经确定i选择了3号的钥匙,那么对于3号小朋友来说如果他选择占用i的钥匙那么剩下的n-2把钥匙又就行An-2的讨论,如果他不选择占用i的位置那么问题就等同于1不拿1的钥匙,2不拿2的钥匙,3不拿i的钥匙,4不拿4的钥匙,以此类推也就是An-1。首先看到14个小朋友可以开自己的门,那么其实这就是组合问题,也就是C(14,28),然后14个小朋友不是对应的钥匙则是一个错排问题。
2024-03-10 21:29:53 901
原创 堆排序(手写)
删除和修改第k个元素或者任意元素,需要维护两个数组一个是用来标记第k个插入的元素在堆中的位置ph[],另一个是堆中的第k个元素是第几个被插入的元素hp[]问题4:删除任意一个元素 heap[k] = heap[size];问题3:删除最小值 heap[1] = heap[size];问题5:修改任意一个元素 heap[k] = x;问题1:插入一个数 heap[++size] = x;hp[j]=k表示堆中下标为j的元素是第k个被插入的元素。ph[k]=j表示第k个被插入的元素在堆中的下标为j。
2024-03-09 17:06:08 352
原创 并查集(高频笔试题)
1.将两个集合合并2.询问两个元素是否在一个集合当中问题1:如何判断树根:if(p[x]==x)问题2:如何求x的集合编号:while(p[x]!=x) x=p[x];只有根节点的父节点是自己问题3:如何合并两个集合:px是x的集合编号,py是y的集合编号 p[x]=y问题4:为什么说路径优化之后的时间复杂度是近似于O(1)的。
2024-03-08 22:19:33 377
原创 单调栈(经典例题)找最近的小数
每次输入一个数x,就将它和栈顶元素比较,如果栈顶元素比输入的元素要大则抛弃它一直抛弃到出现比输入元素小的数字,那么这个数字就是离输入元素最近且最小的数字,当然有可能一直弹到栈里没有元素,那么就输出-1表示没有比x小的数存在,最后把x输入到栈里面。采用单调栈的思想来做,核心思想是当前面被输入的元素比后面被输入的元素还大的时候,那么前面这个元素就可以抛弃不要了,因为后面被输入的这个更小的元素一定是优先被输出,因此采用一个栈来存储输入的数。
2024-03-06 14:28:08 371
原创 最长连续不重复子序列(双指针)
关键是是s数组的变化,s[i]表示子序列中数字i出现的次数,如果i出现的次数大于1说明这个子序列就存在了重复的数字那么就要开始缩短子序列的长度,也就是左指针要向前移动同时s[a[j]]--,直到s数组中没有大于1的数字。给定一个长度为n的序列找出最长连续不重复子序列的长度。
2024-03-03 15:06:58 387
原创 公因数匹配
解决方法:在输入一个数字的时候就分解他的质因数,用map来存储,然后在遍历每一个键值对找到其中最小的i和j输出即可。难点:分解质因数,质因数是表示任何一个数字如果能被分解成除他本身和1相乘的数,那么这个因数一定可以转成质数相乘的形式。表达的意思是在{5,3,2,6,9}这个序列中,3和6这两个数字存在大于1的公因数(3),并且符合i<j的条件。
2024-02-27 09:59:02 481
原创 工作时长C++
代码思想:首先将每一个时刻换算成秒,这个秒是距离2022年1月1日0点0分0秒的时间,然后对所有时间进行排序,最后两两相减得到总时间。
2024-02-01 11:45:02 391 1
原创 比特位计数
因为最高有效位对应的二进制数与要求的正整数的二进制数来说只有最高位的1是一样的其他全是0,那么我们用x-y的二进制数就比x少了最高位那个1,但是其他位数和j的二进制数是一样的,因此就可以用bits[x] = bits[x-y]+1来表示。那么问题就变成找到这个j,方法就是对于正整数x来说,找到小于等于x并且是2的整数次幂的最大数y,也就是找到x的最高有效位对应的数是什么,比如9的二进制数是1001,最高有效位对应的是1000也就是十进制的8,方法二:动态规划,最高有效位。方法三:动态规划,最低有效位。
2024-01-26 11:53:51 396 1
原创 整数划分(动态规划)
例如这个问题可以转成用n种商品(1~n)其中每种商品的体积就是自己的序号,然后用一个容量是n的背包来存放这些商品,每种物品可以取无数次,问能有多少种装法恰好把背包装满。这样就把问题转成了类似完全背包的类型,只不过完全背包要求的是最大价值,他的状态选择是max,而整数划分要的是种类,因此考虑的是sum。
2024-01-07 16:55:00 560 1
原创 YOLOV8出现结构不变化以及keyerror错误提示
最近在魔改V8的网络结构主要是进行一些卷积的替换,但是跟着别人的博客走修改完所有东西后,运行代码时会出现网络结构没变化还是原本的网络结构。
2024-01-06 15:39:43 1655 11
原创 DETR解析(个人)
DETR的最重要点是抛弃了锚框的标注,要知道在大多数的目标检测中耗时耗力的就是锚框的人为标注以及训练时NMS(非极大值抑制)这两个地方,DETR通过定量的设置object queries的个数同时这也是可学习的检测框,将锚框以及NMS处理两步直接省略,使得最终实现代码十分简单,唯一使用的就是匈牙利算法通过目标框与预测框之间的损失来确定选择哪些个预测框作为最后的识别框。
2023-11-01 15:59:43 99 1
原创 三数之和(双指针的应用)
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。
2023-10-25 09:58:58 85
原创 C++中pair与map的区别
今天在刷力扣的时候发现了一个罗马数字的题目,题目要涉及到键值对的使用,在学过的数据结构中我第一下就想到map键值对然后使用map进行匹配代码逻辑是输入一个参数,然后根据参数的大小进行键值对的比较,然后打印出对应的罗马数字但是结果却不对,例子是58他不会输出50+8对应的字符串而是直接打印58个1按照代码思想来说看起来是直接跳过了前面的50这些值而直接对1进行比较然后不断重复num--直到num=0。
2023-10-24 11:51:35 301
原创 循环单链表解决约瑟夫问题
假设在一个圆桌上有n个玩家,让玩家从1开始报数,数到3的人被淘汰,从下一位开始重新报数直至剩最后一位玩家游戏结束。求最后一个玩家是一开始的第几位玩家?想到圆桌就应该很自然的想到数组的遍历以及循环单链表的遍历,这里我认为循环单链表的算法更加好玩且更加客观可见,因此就把自己写的算法拿出来供大家参考。原理很简单的就是通过一个结点保存玩家信息然后通过删除结点直到结点总数只剩1时就代表游戏结束,输入最后结点内的信息即可。
2023-03-23 16:50:37 62
原创 Anaconda-python3.6安装Opencv
Anaconda安装Opencv为后续计算机视觉项目搭环境在Anaconda中 pip install opencv-python==3.4.1.15的时候出现了找不到版本的问题,在控制台出来一堆红字报错
2022-06-07 21:38:18 3558 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人