自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (1)
  • 收藏
  • 关注

原创 A-1:树状数组

树状数组入门理解

2024-04-20 21:05:00 1039

原创 默写单词cpp(初学者版本)

在一个阳光明媚的早晨,我愉快的奋笔疾书,抄写默写着单词“abandon”,喝水的时候,水性笔顺着桌子掉落到地上,我心里一紧,颤颤巍巍的弯腰捡起来,在纸上写个字,发现果然笔尖果然摔坏了。8:输入数字2,输入文件名,由于之前是将txt文件放入项目文件内,所以不需要添加多余路径,这是“相对路径”。3:将要默写的单词按照图中格式写进txt文档,格式是:英文+空格+中文+“,”+中文+“,”+…2: 创建txt文档,命名day1,2,3,4,,以此类推,这是我的习惯。首先抱歉,代码写的很乱,很难看。

2024-03-19 22:25:08 1293

原创 N叉树的前后遍历非递归

规律:访问根节点->访问根节点的子树使用leetcode的题目来说明。输出根节点−处理子树递归的目的−逻辑处理−递归边界1.递归的目的:输出树的前序遍历2递归的逻辑处理:输出根节点->处理子树3.递归的边界:当树为空的时候返回难点来了,如果要使用非递归的方法怎么办。实际上,在计算机内存中,递归的过程,就是一个模拟栈的过程,遵从先进后出,后进先出的原理。每层递归的参数都会保存下来,等到递归回溯的时候才会将参数给回收。

2024-02-29 18:42:39 559

原创 树的括号表示法

发现,所有的括号都是配对出现的,且’(‘其配对的是最近的’)’。每次当遇到’(‘的时候,可以把新的问题具体成”构建一棵小树“(发现和最开始的问题是一个内在逻辑)。对于S字符串分析,S=A(B(,D(G,)),C(E,F(H,)))。遍历到B后面的’(‘的时候,问题变成构建B(,D(G,)),C(E,F(H,))这棵树,然后B挂在A身上。最开始的问题是构建A(B(,D(G,)),C(E,F(H,))) 这棵树。遍历到D后面的’(‘的时候,问题变成构建D(G,)这颗树。1.用一个类表示树的节点。

2024-02-28 18:33:17 1423

原创 leetcode 42.接雨水

【代码】leetcode 42.接雨水。

2024-01-27 13:40:46 474

原创 蓝桥杯官网题目:2.包子凑数

对裴蜀定理有兴趣的可以关注我这篇博客,我会从cf和leetcode等网站更新相关内容,将会以链接形式帖在本篇下面。是一个未知数,它的取值有无数个,如果在三维坐标系中看,那么是所有的z(z可以被gcd(a,b)整除)。也就是说,ax+by可以表示大于(a-1)*(b-1)-1的所有正整数。也可以看一下我的个人理解,我是第一次听说这个定理,理解可能有误差。当x,y都是正整数的时候,包括0。,还有完全背包的基本运用,这里只介绍前者。的三维立体图,很显然是一个空间平面。a,b如果是互质的,那么。

2024-01-20 17:57:55 698

原创 Leetcode:128. 最长连续序列

乍一看感觉很简单,一看要用O(n)???因为我觉得题目很难而且题目看起来很简单,感觉以后会用到😆,做个记录。

2024-01-18 00:06:43 630

原创 介绍几种常见的质数筛选法

质数:除了1和他本身没有其它因数的正整数就是质数。1不是质数,2是质数。

2024-01-10 23:07:24 1516

原创 怎么使用Markdown

如何使用Markdown,官方自己的,随时查阅

2024-01-08 12:18:00 773

原创 leetcode:322. 零钱兑换(暴力dfs,记忆化dfs,动态规划(朴素+优化),bfs+贪心)

1.由于每件物品可以无限取,那么可以发现这是一个完全背包问题模型。

2023-05-21 13:11:09 801

原创 蓝桥杯训练day6

经典问题,但是要考试了,先不写了,考完蓝桥杯细细说。dfs所有路径,然后使用set判重。

2023-04-05 21:48:18 567

原创 蓝桥杯训练day5

求左边第一个小的数,等价于求右边第一个小的数(将答案倒过来即可),从左往右使用单调递增的栈。求左边第一个大的数,等价于求右边第一个大的数(将答案倒过来即可),从左往右使用单调递减的栈。很明显,每次计算一次f[i],都要找到前面m个f的最小值,这可以想到单调队列维护最值。首先,可以敏锐的发现这是一道动态规划的题目,如果没有察觉,说明题目做少了。第一步:算出p的最长前后缀,用两个p来求。第二部:算出p在s中的位置,用p和s来求。首先异或运算的规则是:相同则0,相反则1。p是模式串,s是主串。

2023-04-04 20:10:04 565

原创 单源最短路建图

Bellman_ford算法会遍历所有的边,但是有很多的边遍历了其实没有什么意义,我们只用遍历那些到源点距离变小的点所连接的边即可,只有当一个点的前驱结点更新了,该节点才会得到更新;由于是刚开始写,所以说明每个算法的基本逻辑,但是很明显做法2和做法4是优先考虑的(因为是优化版嘛)说一句,可能不对,但是这个算法好像floyd算法啊,就是不停对边进行松弛。思路:枚举所有点为起点,计算起点到所有牛的最短路径的和。任意选一个模板,找到点1到最远的那个点的距离。floyd算法写的(yxc的方法)

2023-04-01 11:10:26 272

原创 数位dp初理解+练习

和2376一样的解放,算出没有重复的数,n-没有重复的数,剩下的就是有重复的。

2023-03-26 22:18:32 90

原创 蓝桥杯训练day4

每个家族有唯一的一个族长,如果给出家族所有人之间的关系,要将所有的人归类到确定的家族(有什么意义?比如我知道a是b的姑妈,但是这并不知道a是哪个家族(A,B)的,如果知道a是A族长的女儿,那么间接就知道了b是A族长女儿的侄子,那么b就是A族的成员) 这就是并查集要做的。第二件事情:如果将AB连两个族合并,不需要将A族的成员的全部转移到B族,只需要将A族族长和B族族长联系起来就可以。将元素放入末尾,然后向上进行比较和转移,维护二叉树的性质(对于任意节点,他大于等于他的左右孩子节点)对于堆的操作,简单介绍。

2023-03-25 22:14:32 613

原创 最长回文子串的三种做法

为什么这样说呢,因为这个manachar算法我从一年前就接触了,那个时候不会,看来两个小时没看懂,过了半年看懂了,然后又忘了,然后去看董晓老师讲的,又感觉自己行了,到现在可以很轻松的写出来。2.长度为2的字符串也特殊处理,因为dp[i][j]=dp[i+1][j-1]中,如果i==j-1,那么i+1

2023-03-23 17:40:06 2209 2

原创 蓝桥杯训练day3

但是可以知道的是,无论是哪种操作方案,一旦决定了第一步,按照上面的定义,一层一层来递推,得到的答案是唯一的。那么就穷举第一层的操作,然后固定第一层,从第二层开始去点亮上面一层的灯。对于全是B的情况:从字符串第一位开始,如果当前字符不是B,那么当前字符和下一个字符都变。递归的小诀窍,尝试解决问题,往里面解决三层,然后发现规律,然后利用规律写递归方程。过程比较复杂,需要做好一写就一天的思想准备,一步一步来,巩固基础,然后做出这道题。思路:经典二叉树问题,很入门的递归的题目,但是要手写非递归方式有点考验能力。

2023-03-22 19:34:39 372

原创 leetcode 1648. 销售价值减少的颜色球

我们知道,每次取球,都是从最大值集合里面取球,直到最大值集合所有的数都变成次大值,即次大值集合变成新的最大值集合。比如:a球有5个,此时取出一个a球,这个a球的价值是5,剩下4个a球。如果再取出一个a球,那么这个取出的a球的价值是4,以此类推。因为每次取出数量最多的球,也就是每次取出价值最大的球,每次取出最大价值的球,那么取n次,一定保证最终的价值最大。我们把Max拿到初始数组(没有动过的数组inventory),那么由于最终数组不能有大于Max的元素,所以就很明了了。这样可以保证取得的价值最大。

2023-03-10 21:25:50 554

原创 蓝桥杯训练day2

(1)在第二步中,a,b是从小到大枚举的,且可以保证ab成立,那么把a,b置换一下,一样成立。直接枚举所有连续的字符串的组合,找到唯一的那一个,记录下长度即可,非常简单。因为层数从小到大遍历,遇到大的才更新,所以可以保证第一次遇到的最大值层数最小。(2)left,right指针,left指向第一个遇到的x,right指向最后一个遇到的x。然后用一个l,r指向一个帖子的区间,判断该帖子是否满足要求,然后判断下一个帖子。二分还真可以做,需要字符串哈希的我知识,也可以直接用stl。

2023-03-06 20:17:41 2447 2

原创 蓝桥杯训练day1

这个题目难啊,由于所有的数都要一样,所有差分数组必须除了第一个数其余全是0.由于差分数组每次操作都需要b[L]+1,b[R+1]-1或b[L]-1,b[R+1]+1.所以将正数和负数相互抵消后,剩下的数要么和b[1]抵消,要么和b[n+1]抵消。只有后缀和满足1/3的下标大于前缀和的下标,就加(具体看代码)过(19/22)数据。就从后往前读一遍看看哪些位置可以为1就可以了,应该是个简单到不能再简单的题,,,这个题目,看的第一感觉应该是个简单题,没想到是个中等题,暴力只能过一半数据。

2023-02-20 21:38:16 495

原创 BFS的使用(acwing提高课之搜索)

很明显,这是一个最短路问题,而且边权为1,满足这两个条件,可以考虑bfs了。但是有一个问题,通常使用bfs的时候,只有一个起点,这题每个点都是起点,那么怎么做?核心思想:普通的最小步数只需要记录点的坐标,也就是普通意义上的‘点’。bfs是搜索算法里面最基础的算法,对于队首的点,每次搜索其周围所有的点,然后将其入队。因为值为1的点到最近的值为1的点就是其本身。题意就是:遍历每个点,找到距离当前点最近的值为‘1’的点,记录他们之间的距离。一般的问题是求单源bfs,单源的意思就是一个起点,那么多源就是多个起点。

2023-02-12 17:13:05 420

原创 VC调用AutoCAD自动化的两种方法(包装类、接口)使用详解

在工程领域,使用AutoCAD时经常利用自动化(Automation)技术提高工作效率,VC调用AutoCAD自动化时有两种常用的方式,一个是包装类的方式,另一个是接口的方式,当然不只是AutoCAD,一般的支持Automation的软件都可以使用这两种方式,本文就这两种方式给出详细的使用方法,并简要总结各自的优缺点。文中代码基于VC6及以上。

2023-01-05 10:08:35 2533

原创 模板题---1.5(单调栈,单调队列,kmp,manachar)

这里记录几个基本的数据结构算法。

2023-01-04 21:47:46 446

原创 SegeX SgxVariantArrayT:VC封装支持多维数组的变体类型(VRIANT 、SafeArray)(附免费免积分源代码)

针对Com编程过程中,比如AutoCAD、Surfer、Excel、Word中使用自动化Automation(OLE)功能时,经常遇到VARIANT数组的情况,在VC中使用VARIANT数组很繁琐,特别是多维数组。本文介绍了一种封装VARIANT数组的方法并附带了完整的免费代码,具备以下主要功能:1)最多4维数组的支持;2)使用VARIANT数组类似于CArray、vector,也类似与Vb中的动态数组;3)支持CArray、vector与VARIANT的转换(1~4维)。本文的代码基于VC2012及以上。

2023-01-04 19:12:54 891 4

原创 矩阵快速幂(新手做法)

相当于把矩阵看成‘2’,然后算2n。当然实际上这个2是一个矩阵。换汤不换药哈。//这里默认矩阵的行列都是10,可以自己改,只是为了方便(默认n*n阶矩阵) struct Matrix {Matrix() //默认构造函数 {i

2023-01-02 20:12:16 1136

原创 VC2019 VC2022添加导入Word Excel AutoCAD Surfer等类型库(typelibaray)的方法

前两天,发现很多人在使用VC2019 VC2022开发Office AutoCAD Surfer等自动化组件时,不知道怎么导入类型库,和VC2017及以前的版本相比,类向导中AddClass没有了From a type libaray选项了。甚至还有VC2019以后就不支持tepelib组件开发的谣言。所以这里为大家展示在VC2019及以上导入类型库的方法。

2022-12-30 17:20:51 1478 2

原创 模板题---2.2(图论--最小生成树,floyd,二分图)

说人话的定义:图中点通过移动能分成左右两部分,左侧的点只和右侧的点相连,右侧的点只和左侧的点相连。每次都要找到“除了U里面的顶点,还剩余的顶点里面距离U集合最近的一个点,这个点加入U"。有两顶点集且图中每条边的的两个顶点分别位于两个顶点集中,每个顶点集中没有边直接相连接!对于枚举的边,如果当前边的两个点都在生成树集合内,则这条边不要,否则就要.在带权连通图中,V是所有点的集合,U是已经生成最成的树的顶点的集合。思路:动态规划,从a到b的最短距离等于从a到k和k到b的距离之和。什么是二分图:(引用)

2022-12-30 16:37:03 401

原创 SegeX Automation:VC调用Golden Surfer自动化失败(VC调用Automation失败)原因详解

在工程领域,Golden Surfer普遍使用,为了提高成图效率,经常使用自动化(Automation)技术调用Surfer完成自动绘制。但网上一般提供的调用方式会有一定机会失败,从而大大影响了用户的体验并给工作带来困难。本文来源于SegeX Automation组件中的技术,旨在分析Surfer调用失败的原因,并给出解决办法。本文中的一些方法也适用于其他软件如AutoCAD、Office等软件的Automation使用。本文的代码基于VC2012及以上。

2022-12-29 09:49:28 476

原创 SegeX MemDialog:封装好的内存对话框(非资源对话框)说明

SegeX组件之一:SegeX MemDialog,应用级内存对话框封装类。源码首次公开,下载不需要积分。使用该类不需要在VC中创建资源,具有如下主要功能:1.完备的内存对话框封装,功能齐全;2.提供AddButton...等标准函数添加各种对话框控件;3.无需编写消息处理,使用控件状态机制获取对话框结束后不同控件的状态、内容等,即写即用;4.支持模态和非模态方式打开对话框。支持VC2012及以上。

2022-12-28 11:59:04 398 1

原创 SegeX MemDC:实用型双缓冲内存DC (内存DC 封装MemDC)(附免费源代码)

网上很多现成MemDC一般都只具备基本功能,且只适用于映射模式为MM_TEXT的情况,复杂的场景,比如视图需要放大、缩小,这时很可能要出现问题。本文旨在详细介绍能用于实际应用的MemDC双缓存技术。从基础开始,一步一步讲解技术的实现过程、解决问题以及为什么要这么做。本文附免费的源代码。

2022-12-28 11:52:34 625

原创 SegeX Progress:MFC通用进度条

SegeX组件之一:SegeX EvProgress。应用级源代码,首次公开。EvProgress是基于MFC的通用进度条,功能强大又简单易用。几行代码就可以让你的计算具有进度显示的功能,并且具有多种高级功能:1. 支持任意多个进度条同时存在;2.支持在子函数中继续主函数中的进度;3.支持两级子进度条;4.加入进度条后可避免长时间计算的”应用程序没有响应”;5.支持调节大小、背景颜色、背景图片;6.全自动管理。

2022-12-27 10:06:45 1211 1

原创 任意重循环(循环阶数不定、循环层数不定)

有时需要用到不定层数的循环,也就是说循环层数不定。这是本人实现的任意重循环的代码。供c++编程人员直接使用。

2022-12-25 11:26:06 1457

原创 模板题---2.1(图论)

Bellman_ford算法会遍历所有的边,但是有很多的边遍历了其实没有什么意义,我们只用遍历那些到源点距离变小的点所连接的边即可,只有当一个点的前驱结点更新了,该节点才会得到更新;,决定是最大优先队列还是最小优先队列,默认的less为最大优先队列,实现方式是最大堆,greater为最小优先队列,实现方式是最小堆,结构都是二叉树。核心:对所有的点进行“对邻接边尝试松弛”即dist[to]=min(dist[to],dist[from]+w[from][to]);大根堆就是根节点最大,小根堆就是根节点最小。

2022-12-23 15:10:46 384

原创 模板题---1.4(双指针,位运算,离散化)

如果更依赖于数据的相对位置而不是绝对位置,需要使用离散化的思想。

2022-12-15 21:37:29 76

原创 模板题---1.3(前缀与差分)

给一个二维数组:求出其中某个子矩阵区间的所有元素之和。暴力法效率低,用二维前缀和解决。细节:‘’pre[r]-pre[l-1]‘’不要写成"pre[r]-pre[l]“差分:如果有两个数组,a,b。b数组是a数组的前缀和。那么a数组就是b数组的差分。描述:一个一维数组 1 2 3 1 5 6 .用pre[i]表示前i个数的和。思路:同上,二维差分是这四个模板最难理解的一个。

2022-12-12 20:14:53 95

原创 模板题---1.2(高精度--加减乘除)

比如1234和321.用strcmp比较就是321大。注意去除前导0.再一个不要用string类的自带重载运算符。输入两个由数字组成的字符串相加。输入1234 1234。

2022-12-12 10:12:42 110

原创 n枚硬币中找到一个残次的(dfs)

dfs

2022-12-08 13:09:47 195

原创 蓝桥杯---动态规划(1)

这袋糖果里面有之前没有尝过的,那么选择它,如果这袋糖果所有的口味都已经尝过,那么就不要这一袋。那么只需要将当前的尝过的口味的状态表示处理,就可以用简单的01背包去完成这道题。这道题的dp定义:dp[i][j][k]表示前i层,第i层的状态是j,第i-1层的状态是j-1的合法方案数。状压dp:(1)预处理合法状态。原始思路是枚举所有的子串,然后对每个子串进行求值,最后求和。思路:对于每袋糖果,要么选,要么不选。换个方法:枚举所有字符,累加另包含当前字符的子串数目。方法:状态压缩+简单dp(简称:状压dp)

2022-12-01 21:59:32 1050

原创 模板题---1.1(快速排序,归并排序,二分)

找到目标值起始和结束的位置。(目标值可以有多个)给n个数从小到大排序。给n个数从小到大排序。数组默认从小到大排序。

2022-11-26 12:52:37 81

原创 动态规划--树型dp

关键是往上面找,那么就需要先dfs找一下每个顶点的最长路径和次长路径。然后再一次dfs来求出每个顶点往上面(父节点)搜索的最长路径。那么就可以枚举每个顶点,当前顶点为路径的最高一个顶点,路径只能往下面延伸。最长路径一定会在这个集合里面。先任意找到一个树中一个点u,找到距离u最远的一个点v,那么v一定是树的直径(树的直径不唯一)的一个端点。任意一个点u,它有两种情况,要么以u为起点向下延伸找到最长距离,要么往上面延伸找到最长距离。将树的直径的集合转换为且以某个顶点为一条路径的最高点的集合。

2022-11-23 18:22:20 610

SegeX SgxVariant:VC封装支持多维数组的变体类型(VRIANT 、SafeArray)(免费免积分)

SegeX组件之一:CSgxVariant。VRIANT变体类型是Com技术中的一种标准数据类型,Vb中的变体也是这种类型,在针对Com编程过程中,比如AutoCAD、Surfer、Excel、Word中使用自动化Automation(OLE)功能时,经常遇到VARIANT数组的情况,在VC中使用VARIANT数组很繁琐,特别是多维数组。CSgxVariant封装了VARIANT,具备以下主要功能:1)使用方便,最多4维数组的支持;2)使用VARIANT数组类似于CArray、vector,也类似与Vb中的动态数组;3)支持CArray、vector与VARIANT的转换(1~4维)。代码适用于VC2012及以上的Windows程序。 使用方法见代码中的CSgxVariant::Test()函数。

2022-12-30

SegeX组件之一:SegeX MemDialog源码 应用级内存对话框封装类

SegeX组件之一:SegeX MemDialog,应用级内存对话框封装类。源码首次公开。使用该类不需要在VC中创建资源,具有如下主要功能:1.完备的内存对话框封装,功能齐全;2.提供AddButton...等标准函数添加各种对话框控件;3.无需编写消息处理,使用控件状态机制获取对话框结束后不同控件的状态、内容等,即写即用;4.支持模态和非模态方式打开对话框。支持VC2012及以上。

2022-12-27

MFC高级通用进度条(SegeX EvProgress)

原创高级功能的MFC通用进度条组件,《工程地球物理系统(SegeX)》原创组件之一。首次公开源代码!最少只需3行代码完成所有的进度条工作。附源代码和工程示例(VC6、VC2022,两者测试通过)。 组件具有多种高级功能:1. 支持任意多进度条同时存在;2.支持在子函数中继续主函数中的进度;3.支持两层子进度条;4.加入进度条后避免长时间计算的”应用程序没有响应”;5.支持调节大小、背景颜色、背景图片;6.自动释放(只需要声明进度条,不必人为结束)。

2022-12-25

任意重循环(循环阶数不定、循环层数不定) c++ 代码 原创

有时需要用到不定层数的循环,也就是说循环层数不定。这是本人实现的任意重循环的代码。供c++编程人员直接使用。 VC6~VC2022均可。其他语言也具有参考价值。

2022-12-23

链表数组的输入输出删除示例.sln

链表数组的输入输出删除示例.sln

2021-09-24

空空如也

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

TA关注的人

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