- 博客(42)
- 问答 (1)
- 收藏
- 关注
原创 HashMap源码
HashMap实际上由数组,列表,红黑树组成插入一个,会生成一个节点Node会根据来决定插在数组的位置发生冲突,则插在同一个index的链表上。
2023-10-21 10:02:50
195
原创 cv2.goodFeaturesToTrack()/cv2.GFTTDetector_create将角点作为特征点进行特征匹配
若本文对你有帮助,请记得点赞、关注我喔!
2021-05-16 22:18:10
1333
1
原创 python+opencv利用滑动条对对霍夫圆进行调参
在学习过程中 手动不断去调参拟合霍夫圆 不仅麻烦而且会漏检而用滑动条就可以很大程度上解决这个问题两个APIcv2.createTrackbar(a,b,c,d,e) 主要功能:定义滑动面板a:滑动条的名字b:防止滑动条的窗口的名字c:滑动条的默认值d:滑动条的最大值e:回调函数 每一次滑动面板都会调用cv2.getTrackbarPos(a,b) 主要作用:获取滑动条的位置a:滑动条的名字b:滑动条所在的窗口相比cv2.createTracbar 它是由返回值的即滑动
2021-05-03 19:56:34
354
原创 关于AAMED代码配置的一些问题(个人记录)
我用的是opencv3.4release+python3.6版本1.用python配置之前一定要先用博主的vs配置一遍源代码因为python的代码都是基于vs中的c++这里放上博主的csdn文件博主的csdn文章相关的GitHub按照博主的c++配置之后 若出现340dll找不到 则需要将opencv3.4.0\build\x64\vc14\bin目录下的opencv_world340.dll(如不行就把所有相关的 opencv_world340都拷贝过去)放到Windo
2021-04-25 09:55:55
718
2
原创 pytorch下的简单线性回归
其他的都在这课中讲的很清楚了https://www.bilibili.com/video/BV1Y7411d7Ys?p=4我记录两个小细节w定义后包含data和grad,两个都是tensor类型w后梯度下降w=w-learing_rate*grad(不需要带data)这个过程只是单单的进行tensor类型的加减,如果输出所以后期想要直接输出数值就要用到item()方法import torchimport numpy as npx_data = [1.0, 2.0, 3.0]y_dat
2021-03-15 11:39:50
61
原创 opencv中的RGB改变通道的数值,而对整张图的影响
写在最前面:谨记在opencv中,通道默认是BGR(blue,green,red) !# 假设已经生成了一张noise_img三通道的图片 默认是uint8(类型) # B=0 G=0 R=0 全黑noise_img[i,j]=255#意思是该[i,j]像素点的三个通道值全部拉到255 就是呈现白色noise_img[i,j,2]=255#意思是该[i,j]像素点的第三个通道 红色通道拉到255 而其他两个通道则保持0 则图片整体显示红色记录一下 方便自己以后找资料可以翻博客hhh附一想法
2021-03-12 23:48:13
856
原创 tensorflow 2.x 单层神经网络实现mnist手写数字识别
import osos.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltw = tf.Variable(tf.random.normal([784, 10], mean=0.0, stddev=1.0, dtype=tf.float32))b = tf.Variable(tf.zeros(10), dtype=tf.floa
2021-02-19 23:33:56
298
原创 堆排序降序输出和升序输出
堆升序输出和降序输出的总结:堆升序输出采用的是大根堆,降序输出相反。但两个操作中的up和down稍微有些不同。先说大根堆:up操作:和父节点比较只要>根节点 就和父节点交换位置,递归操作dowm操作:若该结点小于子节点 则和最大子结点交换位置 (因为要符合大根堆的结构),也递归操作构建大根堆时 按照1~n的顺序每一个点都往上up一遍输出时:输出h[1],再h[1]=h[size],size–,再将h[1]dowm一遍再来升序输出,采用小根堆up操作:和父节点比较,只要大于父节点就和父
2021-01-17 15:46:16
1494
原创 ZOJ 1914&&POJ 2349 Arctic Network(Prim + 思路分析)
/*时间:2020.12.xx题意:村庄之间可以通过卫星或者无线电进行连接 有卫星是最好了(从题目方面讲可以减小D)除去用卫星连接的村庄后 剩下的村庄距离只有<=D 才可以通过无线电连接(题目所说的“而D则取决于无线电收发器的功率。功率越高,D值越高,但成本越高”实则都是废话,其实就是想说D越小越好。。)先说结论:其实就是想要在最小连通子图中输出第S大的边证明:题目会给出n个点 S个卫星通道在最小连通子图之中 n个点 对应有n-1边S个卫星通道 可以解决S-1条边的连通 并且一定会是
2020-12-06 21:00:17
103
原创 ZOJ 1586 QS Network(Prim 模板题)
/*直接从第一个点开始放入 因为到最后这个点还是要被放入的局部最优就能做到全局最优从这个点开始向外延伸想错了题意卡了好久。。。。*/#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N = 1050;const int INF = 0x3f3f3f3f;int g[N][N];//储存点点之间的距离bool st[N];int
2020-12-05 17:27:44
92
原创 POJ 2352 (TLE版本 只提供大致思路)
/*题目大致意思:给定每一个点都有坐标x,y从原点(0,0)开始到点所形成的矩阵内有多少个其他的点 点之和就为等级大致思路:也就是说这个点的左边中点的总和 想到了左子树 就想到了用treap来维护数组----核心:用每个点的x 作为key 每个点的y 作为val---->=x的放在右子树中 否则放在左子树中左旋右旋的关键:左旋:右儿子的y>=父节点的y 主要针对为何加上=解释:因为在右儿子x首先是大于父节点的x,因为这道题目的输入规律来看所以后面输入相同y的
2020-12-02 11:08:23
96
原创 HDU 4585 少林(treap树 递归做法)
一道treap的模板题 很有意思。。/*题目思路:一个新和尚插入后 获取这个点的rank rank-1就能得到前驱的rank rank+1就能得到后继的rank在用两个rank通过get_key_by_rank 获取key 比较key就能得到合适的和尚PS:第一次TLE 试了改写成scanf无果 后发现是数组开小了*/#include<iostream>#include<algorithm>#include<cstring>#include<
2020-11-29 17:11:13
350
原创 双向dijkstra
前段时间用到单向和双向dijkstra去跑地图,比对时间今天来把双向dijkstra的模板放到这里/*比起单向来说,双向dijkstra将搜索半径缩小到原来的1/2,理想情况下,相同地图时间缩小至少一半下面的模板以无向图为例猜想:双向dijkstra只适用于无向图 为何双向dijkstra中不需要用bool型st数组?答:可以从小的地方思考,如果这个点恰巧是最优解的点,如果被正向搜索过标记后,则永远不会被后向搜索到,那么当计算min_dis=d1[u]+d2[u],会导致d2[u]永远
2020-11-02 21:17:09
1173
原创 初探A*算法
我是从第k短路问题开始了解到A*这么一个神奇的算法 再学完基于贪心+bfs的dijkstra算法之后相对于dijkstra那种"盲目式的搜索"(会从一个点最近的点开始拓展,直到将所有点拓展完)我发现A*算法是一种启发式的搜索,像是有一条导盲犬告诉我们那条路距离终点是最优的现在引入两个概念:估计总距离和实际总距离假设起点为S ,S点第一次向周围拓展的点叫做state假设三个数组数组:d[]:记录起点到state的距离,f[]:state到终点的估计距离,g[]:state到终点的真实距离所以:
2020-09-27 22:45:56
259
原创 HDU 1874 邻接表+堆优化
观察题目点和边的关系可知 这道题最好用邻接表来储存图这道题也就是一道dijkstra 只不过起点和终点是自定义的好了 直接贴代码/*观察本题点与边的关系得知 因该用邻接表储存*/#include<iostream>#include<queue>#include<cstring>using namespace std;typedef pair<int, int>PII;const int N = 2000;const int M = 1
2020-09-14 22:45:19
118
原创 堆优化版本的dijkstra算法 邻接表
一般无负权的单源最短路使用堆优化版本的dijkstra算法这边贴一道模板题啰嗦一句hh:稀疏图用邻接表稠密图用邻接矩阵#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;typedef pair<int, int> PII;const int N = 160000;int e[N], ne[N],
2020-09-12 22:07:21
599
原创 Dijkstra算法 邻接矩阵
//迪杰斯特拉算法基于贪心#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 505;int g[N][N];//用邻接矩阵记录边权int d[N];//记录某个点到第一个点的最短距离bool st[N];//用于标记一个点是否被用于向四周拓展过int n, m;int dijkstra(){ d[1] = 0; //因为要
2020-09-10 17:11:55
1058
2
原创 poj 1111【BFS】
/*解题报告:时间:2020.xx.xx怎么想的:简单说一下题目:一个东西可以往八个方向传染,求被传染区域的周长其实来看就是一道搜索题目 搜到符合题意的X,然后求传染路径所形成图的周长关键:图的周长等于一个点周围'.'的数量总和 所以最开始用一圈'.'包围图会比较方便然后bfs的套路就好了 */#include<iostream>#include<queue>#include<cstring>using namespace std;in
2020-06-02 20:41:26
121
原创 POJ 2243 一道普通bfs的走迷宫
刚开始理解题意,感觉这道题很难懂,不知道棋子怎么走,查了百度骑士的走法后发现自己吃了文化的亏一个骑士按照中国象棋中马的走法,只能在1-8和a-h直接走 严格控制不能在0上走理解题意后 发现这就是道普通的走迷宫 用bfs解决(说实话这道题的输入输出有点恶心,我的做法仅作参考)好了 上代码#include<iostream>#include<queue>#include<cstring>#include<string.h>#include<
2020-06-01 17:08:36
125
原创 关于入门级别dp的01背包问题自己的一些心得体会
f[i][j]代表某个方案,他的值代表该方案下放入物品的总价值对包进行枚举,以为将包分为质量为1,2,3,4,5的小包(后文称之为特定的包) 起到化整为零的作用后续根据一个物品的重量分情况更新方案的值。f[i][j] = max(f[i - 1][j], f[i - 1][j - w[i]] + v[i]):(得先解释一下f[i - 1][j - w[i]] + v[i]是啥,此时的w[i]<=j,物体要放入特定的包中 此时特定的包质量为j,就要去找一个能够容纳下这个物体的特定的包,之后再加
2020-05-28 22:39:56
449
原创 POJ Prime Path BFS经典题目
又是一道BFS经典题目 上代码/*时间:2020.5.20题意:两个质数,一个质数通过有限次变换,每次只改变一个数,最终变成那个数,输出最小次数,不能变到则输出Impossible怎么想:先素数筛把0到10000的素数筛选出来 再用BFS对个位从0变到9, 用d数组记录每一次若为质数的步数叠加,最终以d[y]!=-1结束即y被访问到了 返回d[y]值 注意点:d[tmp]==-1即从未被生成过的素数 时才将步数叠加 因为:先前改变的数会以某种方式在变回来,或造成
2020-05-21 01:23:35
145
原创 Find The Multiple POJ - 1426 BFS+手工模拟队列
写了很多遍最后发现使用stl中的queue会超时选择了手工模拟队列先上一个stl超时版本,见代码#include<iostream>#include<queue>using namespace std;int n, m;typedef __int64 ii;typedef long long ll;void bfs(int u){ queue<ii>q; while (!q.empty()) q.pop(); q.push(u); w
2020-05-15 00:34:44
106
原创 Catch That Cow POJ - 3278 经典BFS入门题
/*题意:将每个数拓展成三个数分别为n-1,n+1,n*2。然后继续将拓展出来的数继续拓展,直到有个数等于k,输出最小的操作数正好符合BFS特点,对每一层的几个数都进行相应的拓展用d数组记录某个点已经被生成或者未被生成用step纪录到达此数的操作数最先到达某个点 可以直接把这个数step数组占有权和d数组占有权 正好符合该题最小操作数*/#include<iostream>#include<cstring>#include<queue>using
2020-05-13 22:58:15
144
原创 set中插入结构体数组(或者被结构体定义的数),谨记重载运算符<
set中插入结构体数组(或者被结构体定义的数),谨记重载运算符<写了一道关于离散的题目,想在set中插入结构体数组,发现报错搜了搜网上资料 发现要自己重载c++中原本的<运算符(个人猜测是因为set中往往插入一个元素,因此原本的<不适用了,需要进行重载,等下再去查查资料)#include<iostream>#include<stack>#inc...
2020-04-28 17:29:34
764
原创 激光炸弹(二位前缀和+枚举)易懂(c++)
不了解前缀和的小伙伴,点击下方(https://blog.csdn.net/tobeyours/article/details/79746095)#include<iostream>#include<stack>#include<vector>#include<map>#include<queue>#include<s...
2020-04-28 15:51:36
286
原创 POJ - 1363 Rails(详细题解报告,stack的简单应用)
时间:2020.x.x题意:注意 题目给出的顺序是出栈顺序1.我门这道题其实就是要判断,出栈顺序是否合理?2.中间站看作是一个stack (现进后出 后进先出的特点)3.他强调车厢分裂 是想要告诉我们 一辆车可以立刻进立刻出,可一旦进入之后不出来 就要等到在栈位置中的上一辆车出去才可以出去4.因为这个上面这个特点,所以才会有两个正确的出栈顺序12345(每一辆车立刻进了立刻出)和6543...
2020-04-18 17:44:55
420
原创 命题公式的真值表计算
1.包括了如何得到后缀式 还有后缀式的计算2.关于去重问题 用set存储命题中的字母 起到去重和排序效果3.自定义一个检查是否为字母的check函数4.map定义的mp中的是按照key值按照一定顺序 排好序的5.关于命题变元的真假值赋值 可以参考子集得到方法i&(1<<j)/*//草稿图*/#include<iostream>#include&l...
2020-04-16 09:17:48
3171
原创 poj3273(二分)详细题解
感谢大佬的文章提供的思路,这道题理解起来有点难没有思路的话,看看着两篇博客挺有思路的https://blog.csdn.net/qq_40421671/article/details/83689995https://blog.csdn.net/weixin_30819163/article/details/98231565/*大致题意:连续的数据分成m组 求最小组里面的最大值(比如很...
2020-04-14 09:36:57
328
原创 hdu 4911 inversion
有很多种求解的方法 我这里就用归并排序来求解逆序对。。题意:他想移动相邻元素<=k次 求移动之后最少还剩对少个逆序对移动相邻的元素本质:减少逆序对减少一对怎么想:所以求出逆序对设为res如果res-k<=0 输出0否则输出 res-k;res+=mid-i+1//仔细体会 每一次归并#include<iostream>using namespace std...
2020-04-10 12:40:17
79
空空如也
idea创建不了css
2021-07-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人