自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5. 最长回文子串 区间dp和拉马车算法

区间dp

2021-12-31 10:33:47 426

原创 约瑟夫问题

题目:有一桌人(共N个人)在做一个游戏,其中一个人从1开始报数,报到第M个数的人从桌上离开,然后继续从下一个人开始从1报数,然后直到桌上的人数小于M,游戏终止请在最短的时间内实现这个过程(如果给每个人编个固定号码的话,要求输出最后剩下的人员编号),写明对应时间复杂度首先看到这道题,我想大家应该和我一样,都会想到暴力,去解。可想而知暴力的时间复杂度为O(n-m+1)*m极端情况,复杂度较高。这里我想到用线段树进行优化。记录当前数到m时,前面(包括本身,已经离开桌子的不算)还有多少人,记录为.

2021-08-05 11:38:05 271

原创 406. 根据身高重建队列(贪心+简洁代码的线段树优化)

题目描述:假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例 1:输入:people = [[7,0.

2021-02-22 20:22:14 437

原创 linux网络 arp请求

1、arp请求 IP地址是不能直接用来进行通信的。这是因为IP地址只是主机在抽象的网络层中的地址。若要将网络层中传送的数据报交给目的主机,还要传到链路层转变成MAC帧后才能发送到实际的网络上。因此,不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 由于IP地址有32 bit,而局域网的硬件地址是48bit,因此它们之间不存在简单的映射关系。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网卡也会使主机的硬件地址改变。可...

2020-11-04 21:26:12 1066

原创 leetcode206. 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路1:先对原链表进行头删除,新建临时头结点,然后把删除的头结点对新链表进行头插入(破坏原链表结构))思路2:所以结点新建,不破坏原先链表结构。代码:/** * Definition for singly-linked list. *.

2020-10-16 11:38:02 82

转载 Linux task_strcut 进程结构体

本文的重点是剖析task_struct,在这之前我们需要先了解一下进程的概念和Linux下进程控制块PCB。1.首先什么是进程?1.1进程可以这样描述:1>进程是程序的一个执行实例;2>进程是正在执行的程序;3>进程是能分配处理器并由处理器执行的实体。按内核观点来谈进程:它担当分配系统资源(CPU时间,内存)的实体。1.2进程的两个基本元素一是程序代码(可能被执行相同程序的其他进程共享),二是和代码相关联的数据集。这里的“和代码相关联的数据集指的是..

2020-09-27 16:24:30 139

原创 C++ 合并两个有序链表

其实合并两个有序链表:最主要的就是内存分配,这是使用的是堆内存,自己控制开辟和释放遍历式:代码:struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head =

2020-06-19 10:52:03 531

原创 leedcode 2. 两数相加 - 链表式 大数相加

题目描述给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807主要考察点:链表(指针),大数相加代码1:...

2020-06-04 14:17:41 178

原创 c++ 中的sizeof() 重要

1.定义sizeof是一个操作符(operator)。其作用是返回一个对象或类型所占的内存字节数。2.语法sizeof有三种语法形式:1)sizeof (object);//sizeof (对象)2)sizeof object;//sizeof对象3)sizeof (type_name);//sizeof (类型)对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。sizeof对对象求内存大小,...

2020-05-12 12:32:22 187

原创 c++ 中的字节对齐和字节填充

c++内存中字节对齐问题详解一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候...

2020-05-12 12:13:45 1716

原创 快速排序 c版本

为了在面试之前,方便回忆,作此代码记录#include<stdio.h>#include<algorithm>#include<iostream>using namespace std; #include<bits/stdc++.h>template<typename T> void Q_sort(T a[],int L...

2020-03-21 12:26:10 116

原创 c++ 基础(一)

1、解析下面含义int *p1 = new int[10]; int *p2 = new int[10]();答:p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数,对于自定义类型而言,只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()...

2019-12-24 15:39:12 309

原创 opencv学习 霍夫直线 HoughLines和HoughLinesP

霍夫直线原理先看一下直角坐标系与参数坐标系之间的转化看y = k1*x + b1p1 = sqrt(x1*x1 + y1*y1);sinθ = y1/p1,cosθ = x1/p1;k1 = tan(Π/2 + θ1 ) = -cotθ = -cosθ/sinθ由上可以解出 b1 = p1/sinθ;y = (-cosθ/sinθ)*x + p1/sinθ;p1...

2019-12-20 12:59:32 947

原创 opencv源码 --- Canny边缘检测

步骤:Canny边缘检测是一种非常流行的边缘检测算法,是John Canny在1986年提出的。它是一个多阶段的算法,即由多个步骤构成。1.图像降噪2.计算图像梯度3.非极大值抑制4.阈值筛选opencv源码中,canny边缘检测的过程。首先,图像降噪--进行边缘检测前,我们知道梯度算子可以用于增强图像,本质上是通过增强边缘轮廓来实现的,也就是说是可以检测到边缘的。但是,它们受噪声...

2019-12-16 16:16:47 803

原创 linux c/c++ 后台开发常用组件之:高性能阻塞队列

看这个之前不懂 互斥锁和条件变量的,请看这两篇文章①重点讲解互斥锁,也讲解了条件变量https://www.jianshu.com/p/e1334db7113a②讲解条件变量https://www.cnblogs.com/jiu0821/p/6424951.html阻塞队列是后台开发中多线程异步架构的基本数据结构,像python, java 都提供线程安全的阻塞队列,c++ 可能需要...

2019-12-11 16:56:38 425

转载 高性能并发队列 C++实现

高性能并发队列(C++实现) 原创 ...

2019-12-11 16:28:16 404

原创 顶层const和非顶层const和函数重载的问题

不懂顶层const和非顶层const的区别的先查看我的这篇博客:https://blog.csdn.net/obsorb_knowledge/article/details/100926991介绍const函数重载的问题前,先介绍一下下面代码:#include<iostream>using namespace std;int ans = 42;void fun(int ...

2019-11-30 15:20:40 504

原创 int a,int *a,int**a,int (*a)[10] 和int *a[10] 的区别,数组引用

首先说一下以下性质a) int a;表示一个内存空间,这个空间用来存放一个整数(int);b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;...

2019-10-23 10:40:16 6067

原创 opencv学习 边缘检测 --拉普拉斯算子(Laplace)

摘要  Laplace算子作为边缘检测之一,和Sobel算子一样也是工程数学中常用的一种积分变换,属于空间锐化滤波操作。拉普拉斯算子(Laplace Operator)是n维欧几里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽·f)。拉普拉斯算子也可以推广为定义在黎曼流形上的椭圆型算子,称为拉普拉斯-贝尔特拉米算子。(百度百科)基本理论首先,拉普拉斯算子是最简单的各向同性微分...

2019-10-14 11:03:28 2700

原创 opencv学习 边缘检测--soble算子

导数与边缘特征看到画红圈的地方了吗,是头发(黑色)和脸部(白色)交界处,也就是图像像素值变化最大处,怎么找出变化最大处呢?如,一条曲线,怎么找变化最大处呢?求一阶导数,当一阶导数最大时,此处就是变化最大处,也就是极值点,最右边的图是中间的一阶导数图。很明显我们图像也可以看着一个函数,对函数求导即可。边缘是什么?是像素值发生跃迁的地方,使图像的显著特征之一。在图像特征提取、对象检查、模式...

2019-10-13 18:26:06 461

原创 opencv学习 - 图像处理 形态学操作 开操作、闭操作、形态学梯度、顶帽和黑帽

膨胀、腐蚀、开、闭运算是形态学操作中最基本的操作形态学操作一般针对于二值化图像。腐蚀:在核区域内,选择最小像素值为当前像素值,和最小值滤波类似、不同点:腐蚀的核形状可以是圆形、矩形和十字形等等。腐蚀从图像变化上来看:就是黑吃白(因为选择的是最小值像素值)。膨胀:在核区域内,选择最大像素值为当前像素值,和最大值滤波类似;不同点:同上,膨胀从图像变化上来看:白吃黑(因选最大像素值)。...

2019-09-29 16:41:44 264

原创 最小二乘法

首先给出公式最小二乘法的公式y = a*x+ b;其中式中N是数据点的个数。注意,以上两式具有相同的分母,∑指逐项加法计算(取和)。∑x指对所有的x值求和,∑y指对所以的y值求和,∑(x^2)指对所有x的平方求和。∑xy指对所有的积xy进行取和计算。应注意,∑xy 与 ∑x*∑y是不相同的(“积的和”与“和的积”是不同的),同样(∑x)^2与∑(x^2)也是不相同的(“和的平方”与...

2019-09-26 10:19:50 7467

原创 差分 --- ACM

差分就是将数列中的每一项分别与前一项数做差,例如:一个序列1 2 5 4 7 3,差分后得到1 1 3 -1 3 -4 -3这里注意得到的差分序列第一个数和原来的第一个数一样(相当于第一个数减0)差分序列最后比原序列多一个数(相当于0减最后一个数)性质:1、差分序列求前缀和可得原序列2、将原序列区间[L,R]中的元素全部+1,可以转化操作为差分序列L处+1,R+1处-1...

2019-09-25 15:26:25 316

原创 opencv学习 --- 腐蚀与膨胀 putText()

一、先介绍几个API(1)opencv中除了提供绘制各种图形的函数外,还提供了一个特殊的绘制函数——在图像上绘制文字。这个函数即是cv::putText()。 void cv::putText( cv::Mat& img, // 待绘制的图像 const string& text, // 待绘制的文字 cv::Point origin, // 文本框的左下角...

2019-09-25 11:45:41 320

原创 图像自适应阈值(最大类间方差法、迭代法、矩形区域块自适应阈值(使用积分处理的自适应处理))

一、最大类间方差法 或者 大津法 或者 OTSU1、简介最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标两部分,或者说,是寻找一个阈值为K,将图像的颜色分为1,2.....K和K+1.....256两部分。如何确定这个阈值K?算法分类的原理是让背景和目标之间...

2019-09-17 16:33:59 4481

原创 #define、const 的区别 const int、const int *、int *const、const int *const、const int &的用法

一、#define和const的区别(1)就起作用的阶段而言: #define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。(2)就起作用的方式而言: #define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。(3)就存储方式而言:#define只是进行展开,有多少地方使用,就替换多少次,它定义的宏常量...

2019-09-17 15:21:39 2086

原创 vs项目中 包含目录、库目录、附加包含目录,附加库目录和附加依赖项

一、vs项目中包含目录、库目录、附加包含目录、附加库目录和附加依赖项均在右键项目 ->属性 ->配置属性中调节。1、VC++目录 (1)包含目录:添加路径 为了寻找#include<xxxx.h>的xxxx.h,也就是头文件。 (2)库目录:寻找.lib文件的搜索目录2、C/C++ (1)附加包含目...

2019-09-16 13:53:06 8434

原创 opencv滤波及C++代码实现(高斯,中值,均值,双边)

图像平滑图像平滑的目的之一是消除噪声,二是模糊图像。从信号频谱的角度来看,信号缓慢变化的部分在频率域表现为低频,迅速变化的部分表现为高频。图像在获取、储存、处理、传输过程中,会受到电气系统和外界干扰而存在一定程度的噪声,图像噪声使图像模糊,甚至淹没图像特征,给分析带来困难。滤波分为 空间域滤波 和 频率域滤波(1)空间域 指的是图像本身 直接对图像中的像素操作...

2019-09-03 11:19:22 7118 3

原创 c# 控件 跨线程 使用

(1) textbox button等等控件 跨线程 使用 Action 函数 = delegate 建立 委托跨线程的方式。 Action asynsBtnDelegate = delegate{ textBox_EEPROMInfo.AppendText(SumStr);};this.textBox_EEPROMInfo.Invoke(asynsBt...

2019-08-29 16:04:09 193

原创 C# Xml 文件

1、Xml的页面:2、建立或写入在这之前,需要知道:从结构上讲.XmlElement(元素)是 XmlNode (节点) 的派生类 XmlNode 是 DOM 的.NET 实现中的基类。在调用本函数前,需要传入结构(如:存储这内容的list链表),路径。代码: public void WriteTestRecordXml(TestRecordStruct...

2019-08-23 16:18:35 520

原创 C# 常用控件

1、checkBox复选框 属性checkBox.Checked =true;2、RadioButton单选框具有两个状态: true 或 false。RadioButton是否已选择取决于其Checked属性的状态。在一个板块中的单选钮,只能选中一个3、listbox列表框 ,列表,所以只能一行一行的加入滚动条添加到列表框中,listBox.Items.Add(...

2019-08-23 15:42:35 840

原创 opencv 掩膜

先介绍一下掩膜操作吧掩膜操作就是对比度的调整,掩膜操作就是重新计算每个像素的像素值,掩膜(mask也被称为 kernel);每个像素实现这个公式 I(i,j) = 5*I(i,j) - [I(i,j-1) + I(i,j+1) + I(i-1,j) + I(i+1,j)],所以边上的像素点不能进行掩膜操作;感觉出来的结果好像就是只有对比度的调整,没有清晰度的调整。等我学了清晰度的...

2019-08-19 16:58:26 2562 1

原创 C# 自定义索引

1、里面运用到了IEnumerable<>接口,using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication3{ public class P...

2019-08-09 11:30:41 182

原创 c# 一些控件

1、基础格式化(1)把int i 转化为 十六进制然后转化为字符型。添加到下拉框中 for (int i = 0; i < 256; i++) { string Xnum = i.ToString("x").ToUpper(); // 把i转化为16进制,然后转化为字符 ...

2019-07-17 19:11:37 220

原创 C#基础编程

输入:s1 = Console.ReadLine(); 输出:s2 = Console.WriteLine(“{0},{1}”,a,b); 强制转换 float a = Convert.ToSingle(Console.ReadLine()); ...

2019-07-12 13:39:38 124

原创 python 数据结构

1、解压赋值多个变量,运用*号(1)如:在一列排好顺序的成绩下,去掉一个最低分和一个最高分,对剩下的数,求平均值def ggg(grede): frist,*list,end = grede return listgrede = [23,45,55,78,89,100]list = ggg(grede)print("%f\n"%(sum(list)/len(list...

2019-06-06 09:29:08 140

原创 python 基础 文件操作

python 3 文件操作一、文件读出写入操作open 函数中的参数值open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None , closefd=True, opener=None)在使用该函数的时候,除了file参数必填外,其他参数可以选用。在本代码中对...

2019-05-28 22:03:18 239

原创 python中 encode()和 decode()

decode()为解码,把从硬盘中读取的二进制文件(字节流字符串文件) 解码 为文本字符串(Unicode)。encode()为编码,把文件字符串,进行编码,存入到电脑硬盘中一般转化如下:在Python3中的字符串类型:  文本字符串类型:    即我们通常定义的str类型的对象。在Python3中,str类型的对象都是Unicode,因此对于str类型的对象只有encod...

2019-05-20 16:58:57 495

原创 The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer(单调栈 + rmq)

题目:11.46% 3000ms 262144KAlice has a magic array. She suggests that the value of a interval is equal to the sum of the values in the interval, multiplied by the smallest value in the interval....

2019-05-04 17:45:17 169

原创 Buy Fruits(打表,找规律,构造)

链接:https://ac.nowcoder.com/acm/contest/847/C来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536KSpecial Judge, 64bit IO Format: %lld题目描述在blueland上有nn个水果店,它们的编号依次为0,1,2...n−10,1,2...n−...

2019-05-04 10:58:30 344

空空如也

空空如也

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

TA关注的人

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